在同一浏览器中在页面实例之间发送通知

时间:2014-06-12 10:43:07

标签: javascript html5 browser

是否可以使用新的HTML5 API在同一个域中的两个页面(或两个不同的页面)之间创建一个通道,但在两个不同的选项卡/窗口(同一台机器)中发送消息?

例如,我有一个带有JavaScript单页应用程序的页面,当我在一个窗口中点击注销或登录时,我会在其他窗口登录/注销。

没有websockets可以做到这一点吗?也许是WebRTC。我应该如何实现这样的东西?

1 个答案:

答案 0 :(得分:1)

由于@NiettheDarkAbsol建议您可以使用localstorage在同一浏览器中发送消息。这里是简短的POC代码(在vanila JS中)

window.onload = function() {
    window.addEventListener('storage', storageEventHandler, false);

    function storageEventHandler(e) {
        console.log(localStorage.getItem(e.key));
    }
    var input = document.getElementsByTagName('input')[0];

    document.getElementsByTagName('button')[0].onclick = function() {
        localStorage.setItem('name', input.value);
    };
};

使用html

<input/>
<button>notif</button>

唯一的限制是消息需要与普通消息不同。如果您发送请求的ID(如在JSON-RPC中),则可以修复它。

更新:这是我刚刚为此制作的简单库:https://github.com/jcubic/sysend.js