2012-11-21 92 views
0

即時嘗試在這裏做點什麼。我有一個文件,我設置了一個數組。然後,jquery的藉此陣列和追加的iframe每個值:iframe中的調用函數

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

這導致爲2個內部框架,通過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

出於某種原因,它開始工作。謝謝!

+0

等待iframe的'load'事件。 – alex

+0

我試過了。編輯。 –

+0

其工作,謝謝! onload是必要的! –

回答

1

先等待事件iframe

initialFrame.addEventListener("load", function() { 
    initialFrame.contentWindow.play(); 
}); 
+0

contentWindow在IE上不起作用。如何讓它與IE一起工作? – oneofakind

0

你一般會聽這樣的iframe的load事件:

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

...但我有這個麻煩最近,所以我代替檢查iframe的內容一遍又一遍,直到它有裝,像這樣:

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

不知道這是否是最好的解決方案,但它的工作原理。