2011-02-27 135 views
2


我對jQuery getScript函數有一個「imho」奇怪的問題。JQuery - getScript在新標籤中打開

$.getScript('jquery_ui.js', function(){}); 
// this code works fine 

<script type="text/javascript" src="http://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22feeds%22%2C%22version%22%3A%221%22%7D%5D%7D"></script> 
// works fine,too 

$.getScript('http://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22feeds%22%2C%22version%22%3A%221%22%7D%5D%7D', function(){}); 
// This code redirect my page. 
// But why, oO? This is the same like <script type="text/javascript" src="http://www.google.com/j ... 

我該如何解決這個錯誤?

感謝提前
彼得

+0

我的瀏覽器(firefox)正在加載,空洞時間? – Peter 2011-02-27 09:29:28

+1

對不起,你說的對(http://jsbin.com/aqoda3)在Firefox(Windows&Linux),Opera(Linux&Windows)和Safari(Windows)上的表現也很奇怪。它在Chrome(Linux和Windows)和IE6/7/8中正常工作。五,奇怪。 – 2011-02-27 10:08:29

回答

2

爲正在加載的每個模塊定義一個callback值應該可以解決問題。 (請注意,下面的autoload在查詢字符串值中包含你正在加載的模塊的名稱和您的回調的名稱。)

function maps(){ 
    console.log("maps loaded"); 
} 
function feeds(){ 
    console.log("feeds loaded"); 
} 
$.getScript("https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22maps%22%2C%22version%22%3A%222%22%2C%22callback%22%3A%22maps%22%7D%2C%7B%22name%22%3A%22feeds%22%2C%22version%22%3A%221%22%2C%22callback%22%3A%22feeds%22%7D%5D%7D"); 
// https://www.google.com/jsapi?autoload={"modules":[{"name":"maps","version":"2","callback":"maps"},{"name":"feeds","version":"1","callback":"feeds"}]} 
-2

該行指,美已經包含的文件!
爲什麼你需要將其加載到jQuery的

<script type="text/javascript" src="http://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22feeds%22%2C%22version%22%3A%221%22%7D%5D%7D"></script> 
+0

我的網頁有超時。我首先加載CSS/HTML/jquery.js代碼,1秒後我得到我所有的js文件...像jquery_ui,來自谷歌的js文件等。這使得頁面快速。 – Peter 2011-02-27 09:28:38

+0

對不起,我誤解了你的代碼,我以爲你曾經爲他們使用過所有這些 – ahmedsafan86 2011-02-28 17:52:55

0

這與谷歌API加載程序的問題。在使用JavaScript API的延遲加載時,我自己也遇到過這個問題。我無法找到問題的解決方案,最終只使用了傳統的<script>標籤。

我想他們的javascript代碼正在運行此重定向(不知道它是否是故意的)。你總是可以挖掘他們的代碼來找出重定向發生的地方。 (聽起來很浪費時間)

有沒有其他人有這個問題,但找到了解決辦法嗎?

0
jQuery.ajax({ 
     url: 'http://www.google.com/jsapi?autoload={%22modules%22%3A[{%22name%22%3A%22feeds%22%2C%22version%22%3A%221%22}]}', 
     dataType: 'script', 
     success: function() { 
      alert('succeess'); 
     } 
    }); 

我通常做這個加載JavaScript文件,我運行上面的代碼在我的瀏覽器上,它工作正常。

我還創建了演示http://jsfiddle.net/jDwYL/