是否可以使用新的HTML5 API在同一个域中的两个页面(或两个不同的页面)之间创建一个通道,但在两个不同的选项卡/窗口(同一台机器)中发送消息?
例如,我有一个带有JavaScript单页应用程序的页面,当我在一个窗口中点击注销或登录时,我会在其他窗口登录/注销。
没有websockets可以做到这一点吗?也许是WebRTC。我应该如何实现这样的东西?
答案 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