2014-03-05 52 views
0

我有以下代碼:VS .load的window.onload

function initialize() { 
    var mapOptions = { 
    center: new google.maps.LatLng(53.743317, -0.331004), 
    zoom: 12 
    }; 
    var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 
} 

function loadScript() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = 'https://maps.googleapis.com/maps/api/js?key={APIKEY}&sensor=false&callback=initialize'; 
    document.body.appendChild(script); 
} 

如果我把

$(window).load(function() { 
    loadScript; 
}); 

它不會加載我的地​​圖。谷歌地圖js中的錯誤是Uncaught TypeError: Object #<Object> has no method 'Load'。但是,如果我使用

window.onload = loadScript; 

它會加載它罰款。我完全不知道爲什麼。

$(window).load(loadScript()); 

也有效,只是把它作爲一個函數調用它不。你能告訴我這種行爲的原因嗎?

+0

NB: '$(窗口).load(函數(){ loadScript(); });'不工作,要麼 –

+0

在Jsfiddle上,你的代碼似乎以相同的方式工作:jQuery:[link](http://jsfiddle.net/q5XET/) - window.onload [link](http://jsfiddle.net/AQgG9/) – CodeCarvings

+0

On jsfiddle它不會工作,因爲我的API密鑰不會讓它,所以我不知道你怎麼能說他們以同樣的方式工作 $(window).load(loadScript()); 工程,但把它放在一個功能不。我真的不明白這 –

回答

2

您還沒有實際在$(window).load()版本中調用loadScript - 您剛剛創建了一個「void」表達式,該表達式對該函數的引用進行求值。

執行下列任:

$(window).load(function() { 
    loadScript(); // NB: parentheses 
}) 

或:

$(window).load(loadScript); 

這就是說,你也許想$(document).ready()而不是$(window).load()

+0

不,沒有這些工作。 –

+0

@Baloo這是因爲你的Jquery沒有加載。試試'alert(typeof $)',你會看到 – Yang

+0

我收到警報說這是一個函數,我假設這意味着它已經加載。隨時告訴我,如果我錯了。 –

0

在你的jQuery腳本不調用loadScript方法。 .. 使用:

$(window).load(function() { 
    loadScript(); 
}); 
相關問題