【问题标题】:How to know when an iframe is ready?如何知道 iframe 何时准备就绪?
【发布时间】:2012-02-28 02:16:11
【问题描述】:

我在网页中有一个 iframe,我想在它准备好后做一些事情。我尝试了两种方法:

  • 在父页面,我用这个

    jQuery('#iframe').load(function() {
     //my code here
    });
    

这段代码会在 iframe 加载完成时执行(如我所愿),但因为我的 iframe 指向另一个域,所以此时我无法访问它的内容(跨域问题)

  • 在 iframe 中,我使用这个:

     jQuery('body').ready(function() {
     });
    

这段代码是在iframe开始加载的时候执行的,比我想要的要早很多,所以代码不能正常运行。

那么当 iframe 完成加载并准备好进行 DOM 操作时,我如何执行代码

我搜索发现easyXDM可能是解决方案,但我想知道是否存在更简单的解决方案。

谢谢。

【问题讨论】:

  • 由于它是跨域的,除非您在浏览器中禁用跨域策略,否则它永远不会为 DOM 操作做好准备。
  • 我有点困惑。 $(function() { }); 在 iframe 内应该可以正常工作。无论如何,您都无法从父文档中对其进行操作。所以它应该已经适用于你所拥有的。

标签: javascript jquery iframe cross-domain domready


【解决方案1】:

不要使用jquery,它会让你的javascript知识混乱,

您可以使用以下代码

<script type="text/javascript">
    function show(){
        var iframe=document.getElementById('aa');
        var h=iframe.contentWindow.document.body.offsetHeight;
        alert(h)    
    }
</script>
</head>
<body>
<iframe id="aa" src="3.html" frameborder="0" scrolling="no" width="100%" height="200" onload="show()"></iframe>
</body>

【讨论】:

  • 来自问题:“我的 iframe 指向另一个域”...无论您是否使用 jQuery,您都无法从另一个域访问 iframe 的内容.
【解决方案2】:

既然您想知道 iframe 何时准备就绪,并且您想从该 iframe 跨域访问内容,我认为 easyXDM 将是一个不错的选择。

您基本上可以实现this example,只需将您的代码添加到“onReady”方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-31
    • 2023-03-11
    • 2019-09-01
    • 1970-01-01
    • 2012-02-15
    • 2015-11-07
    • 1970-01-01
    • 2018-03-11
    相关资源
    最近更新 更多