2017-08-29 294 views
0

有下面的代碼iFrame內容的加載和onload事件

<iframe id="myframe" src="..."></iframe> 

<script> 
document.getElementById('myframe').onload = function() { 
    alert('myframe is loaded'); 
}; 
</script> 

我是正確的iframe內容是由一個額外的線程加載所以有可能是一個競爭條件? iframe內容是否可能在腳本中的事件處理程序(在主線程中運行)之前加載,導致alert更新顯示?

+1

不,你是不正確的。你爲什麼認爲這種方式有效?你研究過了嗎?你在'top'中得到了一個執行JS的線程。加載'iframe'後的父頁面加載事件(以及鏈接的JS文件,CSS,圖像等其他內容)。見JS小提琴:https://jsfiddle.net/66xe7j1z/ – nothingisnecessary

+0

可能重複的[確切何時IFRAME onload事件觸發?](https://stackoverflow.com/questions/815263/exactly-when-does-an- iframe-onload-event-fire) – nothingisnecessary

+0

那麼可以保證腳本始終在iframe加載事件發生之前執行? – Mulligun81

回答

0


 

 
    function iframeDidLoad(){ 
 
     alert("Hello World"); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<iframe id="myiframe" src="#" onLoad="iframeDidLoad();"></iframe>