jquery - 如何检测 localStorage 存储事件是否来自 IE 中的同一页面?

标签 jquery css html internet-explorer local-storage

我有一个图书馆 sysend.js允许使用存储事件将消息发送到其他选项卡/窗口。在 IE 中,事件也在使用 setItem 的同一页面上被触发。有没有一种方法可以在 IE 中检测存储事件是在相同页面还是不同页面上触发的?

我的存储事件代码如下所示:

var uniq_prefix = '___sysend___';
function get(key) {
    return localStorage.getItem(uniq_prefix + key);
}
var callbacks = {};
window.addEventListener('storage', function(e) {
    // get user key
    var key = e.key.replace(new RegExp('^' + uniq_prefix), '');
    if (callbacks[key]) {
        var obj = JSON.parse(get(key));
        if (obj) {
            // don't call on remove
            callbacks[key].forEach(function(fn) {
                fn(obj[1], key);
            });
        }
    }
}, false);

localStorage 中的数据是数组,id 为第一项,实际数据为第二项。

最佳答案

您可以检查事件 url 是否与 location.href 不同:

window.addEventListener('storage', function(e) {
    if (e.url != location.href) {
        var key = e.key.replace(re, '');
        if (callbacks[key]) {
            var value = e.newValue || get(key);
            if (value != random_value) {
                var obj = JSON.parse(value);
                if (obj) {
                    // don't call on remove
                    callbacks[key].forEach(function(fn) {
                        fn(obj[1], key);
                    });
                }
            }
        }
    }
}, false);

关于jquery - 如何检测 localStorage 存储事件是否来自 IE 中的同一页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41316798/

相关文章:

html - 容器溢出左侧的 Div 结构和 CSS :hidden

html - CSS : Make only one div respond to the screen size

javascript - 如何使用 jQuery 跟踪文本框中的更改

css - 在使用 justify-content 空间时如何使 div 固定

Javascript 点击时乘法

html - 如何更改我的 yt 视频的位置(我想将它向下移动约 10 厘米,向右移动约 10 厘米,以免发生冲突)

html - 提取 HTML 文件中两个标签之间的数据

html - 如何为 IE 6/7/8 制作自定义过滤器

c# - 我如何使用带有图标的 jquery datepicker 的文本框

javascript - JQuery ajax 调用 - 无法传递 url 参数