我有一个非常相似的问题,网页是我的,而 iframe 内容有一个脚本标签是我的。以下是您可以通过两种方式进行通信的方法:iframe 到父级,以及父级到 iframe。
此代码充当一种侦听器,用于侦听来自其他窗口的消息。如果您想要双向通信,您需要在两个页面上使用它,您的客户以及您自己的页面(嵌入页面和嵌入页面):
window.onmessage = function(e) {
// this get's triggered when other window sends a message
if (e.data == "<some_identifier>") {
// with e.data you can send an identifier
// and then you put the code that should be executed in here (on your page)
} else if (e.data == "<some_other_identifier>") {
// other action to do
}
};
然后您从嵌入式 iframe 网站发送这些消息,并使用postMessage
类似这样的功能发布到父窗口(嵌入窗口)
window.top.postMessage("<some_identifier>", "*");
反之,您像这样嵌入页面,名称必须是唯一的
<iframe src="<your-embedded-url>" name="<some-id>"/>
然后你可以用这个发送一个帖子:
let target = window.frames.<some-id>;
target.postMessage("<some_identifier>", "*");
中的星号postMessage
将决定消息是针对您定位的每个窗口还是仅针对特定窗口(例如,您可以发送仅用于您的网站的消息,其他嵌入站点则无法接收该事件。有关限制的更多信息目标在这里。
如果您有任何问题,请询问:)