一尘不染

JavaScript跨网域iframe问题

javascript

可以说,我有一个名为example.com的网站,在该网站上嵌入了iframe.net域的iframe,现在我想读取iframe的内容并传递一些参数以显示文本消息。像Hi和用户名一样。

现在的问题是,这无法在两者之间建立连接,甚至无法获得我使用以下方法使用的iframe的innerHTML

document.getElementById('myframe').contentWindow.document.body.innerHTML;

它将引发错误“权限被拒绝访问属性”

有谁知道如何在跨域平台中读写


阅读 300

收藏
2020-04-23

共1个答案

一尘不染

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

如果您同时控制两个站点,则可以使用该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('','*');
2020-04-23