2011-02-02 80 views
2

与文档加载后jQuery加载的方式类似,JavaScript脚本完成后需要一定的jQuery。在JavaScript脚本完成后加载jQuery脚本

我正在从Google Data API加载联系人数据,并且数据显示的div需要完全加载(通过javascript)才能被jQuery访问(如果我是对的)。

有没有办法做到这一点?

+0

javascript完成后做了什么?你想要做什么? – Victor 2011-02-02 23:48:16

+0

“JavaScript脚本完成后”的意思是什么?你的意思是,在一些特定的JavaScript函数调用返回后? – Pointy 2011-02-02 23:48:33

回答

5

假设您正在等待Google Analytics加载。现在,您知道当Google Analytics加载时,_gaq将在DOM上注册。因此,除非所有其他(更好)的异步选项,您可以创建一个等待_gaq存在的函数:

waitForGaq = function(fn, attemptsLeft) { 
    var tick = attemptsLeft || 30; 

    if (typeof(_gaq) != 'object' || !_gaq._getAsyncTracker) { 
     //_gaq isn't registered yet 
     if (tick > 1) { 
      //recurse 
      setTimeout(function() { 
       waitForGaq(fn, tick - 1); 
      }, 100) 
     } 
     else { 
      //no ticks left, log error 
      log('failed to load window.gaq'); 
     } 
    } 
    else { 
     //gaq is loaded, fire fn 
     fn(); 
    } 
} 

因此,任何代码需要运行后_gaq被注册,你可以添加到页面正是如此:

waitForGaq(function() { 
    //here's all my code... 
}); 

重申:递归像这仅仅是必要的,如果你要添加的脚本不提供与库交互的异步方式。谷歌分析为一体,是怎样的一个没有实际意义例子,因为它提供了一个更简洁的方法:

http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html

0

后直接原来你需要运行

<script src="foo" id="bar">

$("#bar").after(
    $("<script>").text("some code") 
); 
0

如果我理解正确的jQuery代码注入一个标签,你想要做的事,如:

<script> 
// your javascript code 
</script> 
<script> 
//your jquery code 
</script> 
1

尝试head.js

它允许定义什么时候(在特定的脚本或之后所有的人都已经加载)你想要执行特定的一段代码。

更不用说它本身非常整齐。