具有localStorage的BroadcastChannel-兼容性

时间:2018-06-28 14:22:11

标签: javascript jquery

我在项目中使用BroadcastChannel更改了新消息到达时的所有选项卡标题。 问题在于它仅适用于chrome和firefox。因此,我决定使用localStorage创建一个BroadcastChannel:

setInterval(function() {

    // check new messages:

    var title = localStorage.getItem('title');
    if(title != null && title != 0){

        document.title = document.title.replace(/\(\d+\)\s+/, "");
        document.title='('+title+')' + " " + document.title;

    }
    localStorage.setItem("title", "0");

    }, 100);

和带有Ajax的ajax将检查消息,如果有新消息:

localStorage.setItem("title", i);

问题是,它正在与某些添加(1)的选项卡一起工作,但有些却没有...我认为是因为它在所有选项卡都可以读取它之前将localStorage setItem title重置为0。有什么想法可以使它可用,直到所有选项卡都可以阅读?

1 个答案:

答案 0 :(得分:2)

您应该使用每次调用setItem时都会触发的“存储”事件,而不是间隔读取本地存储。

对于真正适用于所有浏览器的BroadcastChannel,我建议https://github.com/pubkey/broadcast-channel