iframe跨域应用

http://www.cyb.com/iframe.html

<!DOCTYPE HTML>

<html >
<body>
<script type="text/javascript" src="jquery-1.10.2.js"></script>
<script type="text/javascript">
 document.domain="cyb.com"
</script>
<iframe src="http://zym.cyb.com/1.html" id="w"></iframe>
<script type="text/javascript">
document.getElementById('w').οnlοad=function(){
     
    document.getElementById('w').contentWindow.fn()
}
  /*setTimeout(function(){console.log(document.getElementById('w').contentWindow.a)},1000)*/
</script>

</html>


http://zym.cyb.com/1.html

<!DOCTYPE HTML>
<html >
<body >
<script type="text/javascript" src="jquery-1.10.2.js"></script>
</body>
<script type="text/javascript">
document.domain="cyb.com"
window.fn=function(){

$.ajax({
        url:"http://zym.cyb.com/",
        type:'get'
    })
}
</script>
</html>


以上代码可以实现在iframe中调用1.html的fn函数,有几个地方需要注意的:

1,首先要设置document.domain=cyb.com。

2,iframe和iframe标签后面的js代码是同时执行的,如果我们不用onload方法 ,可能调用fn会失败,因为iframe还没有加载完,这个通过不用onload方法在js里直接调用iframe的fn和使用setTimeout后(我设置的是一秒)调用iframe的fn可以看出来,打开F12下的network我们可以看到提示request is not finished yet。所以我们要使用onload确保iframe已经加载进来。

3,iframe里面ajax使用的url要和iframe的url是同域。

顺便说一下,父html里使用iframe的变量用iframe.contentWindow.变量名,iframe使用父html的变量使用parent.变量名。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值