问题背景:
前端解决跨域问题方法中,有一种方法是使用window.postMessage()来进行不同源页面的通信。具体的用法可以参考MDN中关于该Api的解释和用法。但是知易行难,今天自己使用这个方法的时候却是遇到了很多意想不到的问题,在这里记录一下。
踩到的坑:
1.window.open()打开新窗口后页面不加载
使用的是window.open()方法,想通过这个方法打开一个新窗口然后获取新窗口的引用,但是发现打开新页面之后,
浏览器的新窗口地址栏只是显示URL,但是并没有解析这个URL,相当于只输入没有回车。
let otherWindow = window.open('localhost:8080', '_blank')
打开新页面的控制台发现不能发起这个请求,因为对于这种协议没有一种注册过的处理方式,也就是说没法解析这个URL,因为没有开头没有加协议,浏览器应该是把开头的localhost当成协议了,但是这个协议没有注册过的处理方法,所以就报错了。然后解决方法就是在前面加上http://协议头,然后就可以正常发起请求。
但是为什么直接在浏览器中输入localhost:8080回车就可以正常发起请求呢?这是因为浏览器对输入值进行了预处理&#