iframe跨域问题
P粉939473759
P粉939473759 2023-08-24 09:35:29
0
2
501
<p>假设我有一个名为 example.com 的网站,其中 iframe 嵌入了 iframe.net 域,现在我想读取 iframe 的内容并传递一些参数来显示文本消息。喜欢用用户名嗨。 </p> <p>现在的问题是这无法在两者之间建立连接,甚至无法获取我使用以下方法的 iframe 的innerHTML</p> <pre class="brush:php;toolbar:false;">document.getElementById('myframe').contentWindow.document.body.innerHTML;</pre> <p>它抛出错误“访问属性的权限被拒绝”</p> <p>有谁知道如何跨域平台读写</p>
P粉939473759
P粉939473759

全部回复(2)
P粉092778585

Internet Explorer 8 中,作为参数传递的事件可能为 null,这就是您需要以不同方式访问事件的原因:

frame.html中:

window.onmessage = function(event) {
   var evt = event || window.event;
   evt.source.postMessage('Message from iFrame', evt.origin);
};

ma​​in.html上:

window.onmessage = function(event) {
   var evt = event || window.event;
   alert(evt.data);
};

该事件的触发方式与 Rob W 所呈现的方式相同:

document.getElementById('frameId').contentWindow.postMessage('message','*');
P粉670838735

如果您无法控制被框架的网站,则无法规避跨域策略。

如果您可以控制这两个站点,则可以使用 postMessage 跨域传输数据的方法。一个非常基本的例子:

// framed.htm:
window.onmessage = function(event) {
    event.source.postMessage(document.body.innerHTML, event.origin);
};

// Main page:
window.onmessage = function(event) {
    alert(event.data);
};

// Trigger:
// <iframe id="myframe" src="framed.htm"></iframe>
document.getElementById('myframe').contentWindow.postMessage('','*');
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!