jQuery:其他 tab/window 中的火灾事件

jQuery: Fire event in other tab/window

我有两个浏览器 windows AB 并排打开。

当有人在 window A 中单击按钮时,我想 运行 在 window B.

我目前在 window B 和 window.open(myurl,myurl) 在 window A 中告诉另一个 window 开始 运行ning 函数,但是当 url 变化。

在 javascript 中是否有其他解决方案来初始化当前 window 之外的事件?

我能想到的一种方法是引发另一个 tab/window 将检测到的 localStorage 更改,只要两者属于同一域,从而共享相同的 localStorage。 如果在事件触发选项卡中执行如下操作:

localStorage.setItem('detectMyChange', '0');
localStorage.setItem('detectMyChange', '1');

然后你可以检测到另一个 tab/window 上的变化并对其做出反应(我在这里使用 JQuery,与纯 Javascript 类似):

$(window).on('storage', function (e) {
    var storageEvent = e.originalEvent;
    if ((storageEvent.key == 'detectMyChange') && (storageEvent.oldValue == '0') && (storageEvent.newValue == '1')) {  
        // Event detected, do some really useful thing here ;)
    }
});

在触发中更改 localStorage 两次的原因 window 是为了能够使用相同的代码再次触发事件(在相同的 window 或其他中),因为您检测到将 localStorage 变量从一个已知值更改为另一个已知值。

您甚至可以设置不同的新值来向对方发​​送不同的信息tabs/window。 希望对你有帮助。