Microsoft Edge:本地/会话存储在新选项卡中不起作用

时间:2015-08-27 15:22:20

标签: tabs microsoft-edge

我正在研究Azure中托管的Web应用程序。我已经在MS Edge(build 20.10525.0.0)上尝试了它并遇到了以下问题。

我有一个指向目标_blank的链接,可以在新标签页面中打开。在此链接的click事件中,我将一些数据存储在会话存储中。新页面正在检索数据以显示它。这在Chrome,Firefox,IE 9-10-11下工作正常。

在Edge下,存储似乎工作正常。想到,检索并不总是有效。有时,第一次尝试有效。有时候,它会返回null。

我尝试使用本地存储而不是会话存储。我也尝试使用window.open代替目标_blank。这两种解决方案都无效。

有人有想法吗?

3 个答案:

答案 0 :(得分:3)

我在localStorage中遇到了与多个标签相同的问题 - 它只会间歇性地工作,或根本不工作。我的解决方案是切换到@extend(参见docs on MDN),它在IE10,IE11和MS Edge中工作正常(在Edge v20.10240上测试)。

答案 1 :(得分:0)

如果窗口A创建了窗口B,则存储事件会触发

尝试使用此代码

创建一个名为a.htm的文件,并在

中添加此脚本
(function() {
    function write(s) {
        var d = document.createElement('div');
        d.innerHTML = s;
        document.body.appendChild(d);
    }

    var w = window.open('','window_b');
    if (w.location.host === '') {
        w.location.href = 'http://localhost/b.htm';
    }

    if (window.localStorage) {
        setInterval(function() {
            var now = (new Date()).toTimeString();
            localStorage.removeItem('date');
            localStorage.setItem('date', now);
            write('fired on ' + now);
        }, 3000);
    }
    else {
        write('local storage not detected!');
    }
})();

创建一个名为b.htm的文件并添加此脚本

(function() {
    function write(s) {
        var d = document.createElement('div');
        d.innerHTML = s;
        document.body.appendChild(d);
    }

    window.addEventListener('storage', function(e) {  
        e.newValue && write('received ' + e.newValue);
    });

})();

然后浏览到a.htm

答案 2 :(得分:-3)

使用localStorage而不是sessionStorage。它会起作用。