我有一个 HTML 页面(文件主要.html) 使用 JavaScript 在同一域中打开一个新选项卡window.open("新标签页.html") method.
在新选项卡中,用户可以通过单击按钮来结束其活动。此时,我想向开启者窗口发送一条消息。我尝试使用 postMessage,但从新选项卡中我无法引用 opener。
从新标签中我想要类似的东西,但我已经“ko”
var w = window.opener;
if (w) {
w.postMessage("hi", "http://10.150.10.43");
} else {
alert("ko");
}
将消息从辅助选项卡/窗口发送到主选项卡/窗口(在同一域中)的最佳方式是什么?
这很奇怪。打开一个新窗口window.open("newtab.html")
应该让新打开的窗口能够通过以下方式引用开启器window.opener
.
无论如何,还有其他几种选项可以在同一域上的两个窗口之间进行通信。我认为以下两个是最容易实现的:
Use 本地存储。如果您在新选项卡窗口中将某个键下的一些数据存储到 localStorage 中,则打开器窗口将收到存储事件。如果您使用处理程序捕获该事件,则可以从新选项卡窗口写入的 localStorage 中读取数据。请注意,仅当两个页面位于同一域中并且实际上存在两个相关窗口时才会触发事件(事件不会在写入数据的同一窗口内触发)。有关如何执行此操作的更多信息,请参阅例如:http://diveintohtml5.info/storage.html http://diveintohtml5.info/storage.html
Use 共享网络工作者。 Web Worker 是一个 JS 脚本,在后台的单独线程上执行。共享 Web Worker 是一种特殊类型的 Web Worker,它允许任意数量的父文档与单个 Worker 进行通信。因此,您可以使用工作人员在打开窗口和新选项卡窗口之间中继消息。与工作人员通信的 API 与 postMessage API 非常相似。有关如何执行此操作的更多信息,请参阅例如:http://www.sitepoint.com/javascript-shared-web-workers-html5/ http://www.sitepoint.com/javascript-shared-web-workers-html5/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)