chrome浏览器中打开2个掘金官网的标签
1、localStorage
打开左边标签的控制台,输入
localStorage.getItem('msg') // null
然后打开右边的标签控制台,输入
localStorage.setItem('msg', 'hello')
重新打开左边标签的中控制台,输入
localStorage.getItem('msg') // "hello"
通信成功!
2、SharedWorker
打开左边标签的控制台,输入
打开右边标签的控制台,输入
(我猜掘金的换行有问题,所以这里肯定不会换行)
再次打开左边的标签,控制台会看到有hello的消息输出
通信成功!
3、websocket转发(可跨域)
本地简单搭建node的websocket服务:
在左边标签页输入如下代码
右边标签页输入如下代码
可以在左边标签页控制台发现有输出:
server trans, from client2
在服务端可发现输出
服务端:客户端已连接 服务端:客户端已连接
通信成功!
4、postMessage
操作:打开掘金官网控制台,输入
var myPopup = window.open("https://juejin.cn/")
在新打开的标签内控制台注册回调
window.addEventListener('message', e => console.log(e.data))
返回第一个标签页,输入
myPopup.postMessage('hello')
可以在第二个标签页中看到显示输出
hello
通信成功!
5、BroadcastChannel
标签页1控制台输入
new BroadcastChannel('juejin').onmessage = e => console.log(e.data)
标签页2控制台输入
new BroadcastChannel('juejin').postMessage({ value: 'hello' })
返回标签页1控制台发现打印结果
{value: "hello"}
通信成功!