windows 使用JavaScript在窗口/选项卡之间进行通信[duplicate]

3qpi33ja  于 2022-11-26  发布在  Windows
关注(0)|答案(4)|浏览(110)

此问题在此处已有答案

Communication between tabs or windows(共10个答案)
五年前就关门了。
如何让同一个域中的两个选项卡(或窗口)能够相互对话,而不必让一个窗口示例与另一个窗口示例相互作用?

7kjnsjlb

7kjnsjlb1#

我找到了一种方法,我可以在每个页面上制作两个Flash电影,使用LocalConnection调用另一个页面上的JavaScript。
把这个放在AS3的swf中,这是接收器:

import flash.external.ExternalInterface;
import flash.net.LocalConnection;

var mLocalConnection:LocalConnection;
mLocalConnection = new LocalConnection();
mLocalConnection.connect("xivioview");
mLocalConnection.client=this;

function recieveText(textRecieved):void {
ExternalInterface.call(textRecieved);
};

和发送方swf:

import flash.external.ExternalInterface;
import flash.net.LocalConnection;

function sendtoview(con,val):String {
//create local connection for sending text
var sending_lc:LocalConnection;
sending_lc = new LocalConnection();
sending_lc.send("xivioview", "recieveText", val);
return "kk"
}
ExternalInterface.addCallback("sendtoview", sendtoview);

这是为单向设置的,并且javascript使用它:

document.getElementById("youembeddedobject").sendtoview("xivioview","alert('Hai!')")

这将执行receiver选项卡中的JavaScript代码,但它不会执行,直到您返回到该选项卡(我已经问了一个问题,为什么,还没有回应)

jw5wzhpr

jw5wzhpr2#

我能想到的唯一方法是使用XHR。每个窗口/标签页都与服务器通信,服务器又与其他窗口通信,与gmail聊天的工作方式几乎相同。除了你在同一个客户端上有2个窗口,而不是2个客户端上的1个窗口。

vulvrdjw

vulvrdjw3#

我只需要在页面加载中执行一个javascript,它将不断地轮询(window.setInterval)sessionStore以获取一个标志,该标志表示有人向我发送了一条消息,然后从sessionStore中读取该消息,然后执行所需的任何操作。

qjp7pelc

qjp7pelc4#

在HTML5之前,如果文档来源相同,就支持不同JavaScript执行上下文之间的通信。如果不支持,或者没有引用其他Window对象,那么可以使用HTML5引入的新的postMessage API。我在这篇stackoverflow answer文章中详细介绍了这两种方法。

相关问题