如何知道iframe何时准备好?

时间:2012-02-28 02:16:12

标签: javascript jquery iframe cross-domain domready

我在网页中有一个iframe,我想在准备就绪时做点什么。我试过两种方法:

  • 在父页面中,我使用此

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

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

  • 在iframe中,我使用了这个:

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

当iframe开始加载时执行此代码,这比我想要的要早得多,因此代码无法正常运行。

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

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

谢谢。

3 个答案:

答案 0 :(得分:1)

下划线有一个方便的推迟方法,我用过这样的事情,试试:

$('#iframe').load(function() { 
    _.defer(function(){
        //your code here 
    });
});

答案 1 :(得分:0)

不要使用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>

答案 2 :(得分:0)

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

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