跨域iframe问题
比如说,我有一个名为example.com的网站,其中iframeembedded了域名iframe.net,现在我想要读取iframe的内容并传递一些参数来显示文本消息。 喜欢与用户名。
现在的问题是,这两个之间无法build立连接,即使我无法获得我使用iframe的innerHTML方法
document.getElementById('myframe').contentWindow.document.body.innerHTML;
它会抛出错误“权限被拒绝访问属性”
有谁知道如何读写跨平台的平台
如果您无法控制框架网站,则无法规避跨域策略。
如果您可以控制两个站点,则可以使用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('','*');
在Internet Explorer 8中,作为parameter passing的事件可能为空 ,这就是为什么您需要以不同的方式访问事件:
在frame.html中 :
window.onmessage = function(event) { var evt = evt || window.event; evt.source.postMessage('Message from iFrame', evt.origin); };
在main.html上 :
window.onmessage = function(event) { var evt = evt || window.event; alert(evt.data); };
事件的触发方式与Rob W所提供的相同:
document.getElementById('frameId').contentWindow.postMessage('message','*');