jQuery:其他 tab/window 中的火灾事件
jQuery: Fire event in other tab/window
我有两个浏览器 windows A 和 B 并排打开。
当有人在 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。
希望对你有帮助。
我有两个浏览器 windows A 和 B 并排打开。
当有人在 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。 希望对你有帮助。