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);
                }
            }
        };