在同一浏览器中的页面实例之间发送通知
Sending notifications between instances of the page in the same browser
是否有可能在同一域的两个页面实例(或两个不同的页面)之间创建一个发送消息的通道,但在两个不同的选项卡/窗口(同一台机器)使用新的HTML5 api ?
例如,我有一个页面与JavaScript单页应用程序,当我得到点击注销在一个窗口或登录我得到登录/注销在其他窗口。
有没有可能做到这一点没有websockets?也许WebRTC。我应该如何实现这样的东西?
正如@NiettheDarkAbsol建议的那样,您可以使用localstorage在同一浏览器中发送消息。下面是简短的POC代码(在vanilla 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),您可以修复它。
UPDATE:这是我刚刚做的一个简单的库:https://github.com/jcubic/sysend.js
相关文章:
- 调用函数和创建函数实例之间的Javascript差异
- 一个用户脚本的两个实例如何在帧之间进行通信
- 不需要的Javascript效果:原型在实例之间共享闭包
- 实例之间的webpack监视缓存
- 在同一控制器(ng-controller)的不同实例之间共享数据
- GWT:在同一模块的实例之间共享信息
- 使用模块模式和实例化新对象之间的区别
- node.js中类实例之间的共享数组
- 在不同实例之间共享nodejs中的对象
- 如何在JavaScript中进行继承,而不会在子类的所有实例之间共享父类的相同实例?
- vue组件和vue实例之间的通信
- 替换两组重复字符之间的句点的所有实例
- 如何使用javascript原型在实例之间共享属性
- 在JavaScript实例上编写单个原型和使用多个原型之间的区别?只是风格
- Google Apps脚本,用于发现Google工作表的两列之间的差异,忽略空白单元格和多个实例
- 如何正确地创建Javascript原型,使类变量不会在实例化之间持久存在
- DOJO实例化和使用源代码之间的区别
- 在同一浏览器中的页面实例之间发送通知
- 类的静态端和实例端之间的区别
- 获取url中字符最后两个实例之间的子字符串