0

我想在这里做点什么。我有一个文档,我设置了一个数组。然后,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();
};

编辑2

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

4

2 回答 2

1

等待第一个load事件iframe

initialFrame.addEventListener("load", function() {
    initialFrame.contentWindow.play();
});
于 2012-11-22T02:57:24.433 回答
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();

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

于 2012-11-21T12:11:33.733 回答