如何使用Javascript postMessage将不同协议的iframe外部的元素作为目标
How to target an element outside an iframe with different protocol using Javascript postMessage
我在iframe中有一个按钮,我希望它在单击时会触发另一个位于iframe外部的按钮。
这是我一直在努力解决的一段代码。
HTML
<body>
<iframe id="layer-frame" src="https://somepage.com">
<a href="https://page2.com" target="_blank" id="js-gopage2" class="js-iframepostmsg" alt="CLICK HERE TO Edit your profile">Edit your profile</a>
</iframe>
<div>
<a class="close" href="#">Close<span></span></a>
</div>
</body>
在父html 中
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
if(event.data == "click!") {
$('a.close').trigger('click');
}
}
在iframe 中
var targetOrigin = window.location.host;
top.window.postMessage("click!", targetOrigin);
targetOrigin = window.location.host
将为您提供您从发布的页面的主机名,但是:
targetOrigin
指定要调度的事件的otherWindow
的来源
和
其他Window文档的方案、主机名或端口与
targetOrigin
中提供的不匹配
因此,您需要提供一个完整的原点(如http://example.com:234
),而不仅仅是主机名。
如果您不关心允许哪个来源读取消息,请使用"*"
。
相关文章:
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 显示iframe外部的元素
- 如何设置外部javascript创建的iframe的位置
- 从 iframe 外部启动全屏
- 访问 iframe 外部的元素
- 正在确定外部源帧的Iframe URL
- 使用GM-xmlhttpRequest而不是iframe来显示来自外部页面的相关信息
- Js从外部域在父级的iframe中打开链接
- 调整外部网站内容的大小以适应iFrame宽度
- 从外部 iFrame 重定向和链接中删除历史记录
- 有没有办法通过iframe上的JavaScript获取外部页面
- 设置外部 iframe 内输入字段的值
- 禁用 HTML 外部的 iframe 上的导航
- 导致javascript Date()发生故障的外部iframe
- 外部iframe是否可以包含在googlechrome扩展中
- jquery处理来自外部iframe的事件
- 我想从页面上的外部iframe调用js函数之一
- 验证iframe输入字段从外部iframe提交按钮- jquery验证器插件
- 当用户单击外部iframe中的链接时,是否有可能触发跟踪像素?
- 如何通过PHP或JavaScript读取外部iframe