在iframe中调用函数

时间:2012-11-21 11:53:17

标签: javascript jquery

我试图在这里做点什么。我有一个文件,我设置了一个数组。然后,jquery获取此数组并为每个值附加iframe:

<script>
  var containers = new Array("test1", "test2");
</script>

此结果是2个iframe,由id和他的名字标识。好。完美,工作。然后,在每个iframe内部,它调用一个文档。在本文档中,我有一个名为play()的函数。

我正在通过返回警报来测试play()。每当我点击一个按钮,它就会起作用:

$("#viewport .next").click(function(){
    document.getElementById(containers[current]).contentWindow.play();
});

这很有效。完美。但是我把这个函数用来触发文档就绪,它不起作用。

$(function() {
    document.getElementById(containers[current]).contentWindow.play();
});

它回到我身边:

Uncaught TypeError: Object [object Window] has no method 'play'

我做错了什么? 谢谢!

修改

尝试在iframe上应用onload。没工作。

var initialFrame = containers[qual];

initialFrame.onload = function() {
    document.getElementById(initialFrame).contentWindow.play();
};

EDIT2

出于某种原因,它开始工作了。谢谢!

2 个答案:

答案 0 :(得分:1)

首先等待load的{​​{1}}事件。

iframe

答案 1 :(得分:0)

您通常会像这样监听iframe的加载事件:

$("#iframe").load(function(){
    // iframe is loaded
});

...但我最近遇到了麻烦,所以我反复检查iframe的内容,直到它加载为止,如下所示:

function loadFrame() {
    if($('body', $('#iframe').contents()).length != 1) {
        setTimeout(loadFrame,500);
    }
    else {
        // iframe is loaded
    }
};
loadFrame();

不确定这是否是最佳解决方案,但确实有效。