为了账号安全,请及时绑定邮箱和手机立即绑定

跨域IFRAME问题

跨域IFRAME问题

慕村225694 2019-06-04 16:59:52
跨域IFRAME问题比如说,我有一个名为example.com的站点,其中嵌入了iframe.net域的iframe,现在我想读取iframe的内容,并传递一些参数来显示文本消息。就像用户名一样。现在的问题是,这个问题无法在两者之间建立联系,甚至无法获得我使用的iframe的innerHTML(我使用了以下方法)。document.getElementById('myframe').contentWindow.document.body.innerHTML;它引发“拒绝访问属性的权限”错误。有人知道如何在跨域平台上读写吗?
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

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

如果您对这两个站点都有控制权,则可以使用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('','*');


查看完整回答
反对 回复 2019-06-04
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

在……里面Internet Explorer 8,作为参数传递的事件可能为,这就是为什么您需要以不同的方式访问事件:

在……里面framework.html:

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

在……上面main.html:

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

该事件的触发方式与Rob W提供的方式相同:

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


查看完整回答
反对 回复 2019-06-04
  • 3 回答
  • 0 关注
  • 806 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信