iframe中子页面访问父页面的某个元素,产生跨域访问

在同域情况下,子页面如果想要访问父页面中的window对象中的方法的话,直接在当前页面中使用window.parent就可以啦

但是当iframe嵌入的地址与父页面的地址不在同一网段里,就出现跨域问题

解决办法:
1、子页面iframe中的代码:

<script type="text/javascript">
        $("#secondaryDownload").click(function(){
            var fun="click";
            window.parent.postMessage(fun,'*');
        })
</script>

注意:那个fun参数没有实际意义,只是为了加个小校验,当然也可以传入自己想传的参数。

2、父页面代码:

window.addEventListener('message',function(e){
      console.log(e);
       var fun=e.data;
       if(fun=="click"){
            alert("aaa");    
        };
      }
 },false);

这样, 在我们点击子页面的下载按钮时,会给父页面发一个消息,而父页面的事件监听器会接收到从而触发相应的事件.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现iframe跨域访问页面,需要满足以下条件: 1. 页面和子页面都是自己可以控制的。 2. 被嵌入的页面不属于同一个域名、协议或端口号的源。 实现iframe跨域访问页面可以采用以下方法: 1. 使用postMessage:通过在页面和子页面之间进行消息传递,可以安全地实现跨域通信。页面可以使用`window.postMessage()`方法向子页面发送消息,子页面可以通过监听`message`事件接收并处理这些消息。这种方式允许双向通信,并且在不同的窗口间传递数据时更加安全可靠。 2. 设置document.domain:如果页面和子页面具有相同的顶级域名,但不同的子域名,可以通过设置相同的document.domain来实现跨域访问。例如,如果页面的域名是`example.com`,子页面的域名是`sub.example.com`,可以在页面和子页面中都设置`document.domain = "example.com"`。这样,它们就可以进行跨域通信。 3. 使用CORS(跨域资源共享):在服务器端配置响应文件的HTTP头,允许来自其他域的页面访问。服务器需要设置特定的响应头,包括`Access-Control-Allow-Origin`来指定允许访问的域名。 总结起来,要实现iframe跨域访问页面,可以使用postMessage、设置document.domain或使用CORS来进行跨域通信。这些方法都可以确保安全地进行跨域访问,并实现在页面和子页面之间的数据传递和通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值