项目中需要用到 web 一机双屏,也就是一台电脑,两个屏幕,每个屏幕分别展示一部分的内容,两个 web 标签页之间自然少不了实时通信和互动,下面简单介绍一下,在项目中对该问题的思考和最终解决方案:
2. 如果页面地址是动态变化的,则可以使用 js 的 方法。
有两个注意点:
第一个安全性问题:如果父页面和新打开的页面诗不同域名的,浏览器会禁止新窗口访问 opener 中内容,但是可以通过 window.opener.location=newURl 来重写父页面的 url, 即使与父页面不同域。如果父窗口没有做防止被 iframe 嵌入,那么可以使用 iframe 做一个钓鱼页面,如果不注意 url 的化,你可能就被钓鱼了。
第二个性能问题:chrome 每个标签页都是一个单独的进程,然后进程内包含很多个线程,但是如果是通过 a 标签的 target="_blank" 或者 window.open(url) 在新窗口中打开页面,子窗口会于父窗口共用进程和线程,子窗口如果进行了复杂的运算或者请求,那么父窗口极有可能被卡住。
破解方法:
1. 通过在 a 标签上添加这个 noopener 属性,可以将新打开窗口的 opner 置为空。
2.window.open 并设置 opner 为空
- 1
- var newWindow = window.open('xxx');
- 2 newWindow.opener = null;
1.localStorage
通过监听 localStorage 的数据变化实现同一浏览器下不同页面之间的通讯,(跨域不适用,需要结合 postmessage), 在双屏有大量的通讯的时候,建议使用,方便快捷!
推荐库直接进行应用。
2.WebSocket
关于 websocket,不在进行详细说明,在中,有详细说明
来源: http://www.bubuko.com/infodetail-1949759.html