JavaScript何時評估函數?是在頁面加載還是函數被調用?JavaScript:JavaScript何時評估函數,onload或何時調用函數?
我之所以這麼問是因爲我有以下代碼:
function scriptLoaded() {
// one of our scripts finished loading, detect which scripts are available:
var jQuery = window.jQuery;
var maps = window.google && google.maps;
if (maps && !requiresGmaps.called) {
requiresGmaps.called = true;
requiresGmaps();
}
if (jQuery && !requiresJQuery.called) {
requiresJQuery.called = true;
requiresJQuery();
}
if (maps && jQuery && !requiresBothJQueryGmaps.called) {
requiresBothJQueryGmaps.called = true;
requiresBothJQueryGmaps();
}
}
// asynch download of script
function addScript(url) {
var script = document.createElement('script');
script.src = url;
// older IE...
script.onreadystatechange=function() {
if (this.readyState == 'complete') scriptLoaded.call(this);
}
script.onload=scriptLoaded;
document.getElementsByTagName('head')[0].appendChild(script);
}
addScript('http://google.com/gmaps.js');
addScript('http://jquery.com/jquery.js');
// define some function dependecies
function requiresJQuery() { // create JQuery objects }
function requiresGmaps() { // create Google Maps object, etc }
function requiresBothJQueryGmaps() { ... }
我想要做的就是執行異步下載我的JavaScript,並在儘可能早的時間就開始執行這些腳本但是我的代碼依賴於腳本被明顯下載和加載的時間。
當我嘗試上面的代碼時,看起來我的瀏覽器仍然試圖在我的require*
函數中計算代碼,甚至在這些函數被調用之前。它是否正確?還是我誤解我的代碼有什麼問題?
這個問題是唯一相關的是你是明智的把你的JavaScript從你的標記到外部文件。如果你缺乏這種智慧,那麼你應該期待不確定和混亂。 – 2010-05-11 16:30:54