2012-02-29 95 views
1

我想加載一個外部HTML。另外,外部HTML包含一些JavaScript代碼。由於負載功能不會加載這個劇本,我必須使用getScript加入:

<div id="external-content"></div> 

<script type="text/javascript"> 
    $("#external-content").load("external.html #myid", function() { 
    // do something 
    }); 
    $.getScript("external.js"); 
</script> 

這就像一個魅力除非external.js具有嘗試訪問外部元素$(文件)。就緒命令, html的。在我看來,這個事件被解僱得太早。我也嘗試把命令$ .getScript(「external.js」);進入.load回調,但沒有成功。請注意,單獨external.html幷包括external.js直接按照預期工作。

+0

爲什麼不在網站中加入你的external.js,加載external.html?併發起一個自己的事件,external.js作出反應? – 2012-02-29 16:15:41

回答

0

不幸的是,這是有道理的時間(即這是正確的行爲)。標籤內的腳本觸發external.html的檢索,並不等待它返回,它繼續前進到external.js的檢索。與此同時,「基礎」文檔仍在加載,可能(實際上可能)會在externa.html被檢索之前完成。

所以,你可以運行到定時情況,即:

文件的確是準備好(正在裝載external.html不是DOM腳本化是一個條件),external.js被加載並可用,但外部.html尚未完全加載。在存在external.html的元素之前,文檔就緒函數將會觸發(因爲文檔已準備就緒!)。

如果您想要繼續此方法,可能需要重新調整它,以便您在external.js內部使用on()將委託給基礎文檔(#myid)的偵聽器以查看external.html內部元素上的事件。