Jquery 强制在其他窗口中触发localStorage事件
当用户单击一个链接时,它会打开一个页面,向本地存储添加一些内容,然后刚刚打开的页面会侦听本地存储事件。它似乎没有启动,因为我知道必须同时打开两个窗口才能启动存储事件。所以我试着像这样手动调用它:Jquery 强制在其他窗口中触发localStorage事件,jquery,html,javascript-events,event-handling,local-storage,Jquery,Html,Javascript Events,Event Handling,Local Storage,当用户单击一个链接时,它会打开一个页面,向本地存储添加一些内容,然后刚刚打开的页面会侦听本地存储事件。它似乎没有启动,因为我知道必须同时打开两个窗口才能启动存储事件。所以我试着像这样手动调用它: //page containing the link to other window $('.view-btn').click(function () { var selectionName = $(this).parent().parent().find('td:first'
//page containing the link to other window
$('.view-btn').click(function () {
var selectionName = $(this).parent().parent().find('td:first').text();
var key = "sel-view-1";
addToStorage(key, selectionName);
});
var addToStorage = function (key, value) {
defineKey(key, value);
var e = $.Event("storage");
e.originalEvent = {
key: key,
newValue: value
};
var windowRef = window.open("Create_a_selection", "_self");
$(windowRef).trigger(e);
};
var defineKey = function (key, value) {
if (localStorage.getItem(key) === null) {
localStorage.setItem(key, value);
} else {
var nr = parseInt(key.substring(key.lastIndexOf('-') + 1)) + 1;
key = 'sel-view-' + nr;
return defineKey(key, value);
}
}
但这仍然没有抓住这个事件。。。但是,如果页面已经打开,它会捕捉到它,所以我想知道这是否可能与页面尚未加载有关
感谢您的帮助 如果这与页面尚未加载有关,则可以将其放入document.ready
$(function(){/*code here*/})代码>。我不知道这是否是问题所在。@GaryStorey尝试过,但似乎不是问题:/
//page that was just opened
$(window).bind('storage', onStorageEvent);
function onStorageEvent(storageEvent) {
console.log('yay');
if (storageEvent.originalEvent) {
var key = storageEvent.originalEvent.key;
var value = storageEvent.originalEvent.newValue;
if (key.indexOf("sel-view") > -1) {
$('#selection-name-label').html(value);
}
}
};