2011-02-27 76 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/

相关问题