2011-02-02 93 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

它允許定義什麼時候(在特定的腳本或之後所有的人都已經加載)你想要執行特定的一段代碼。

更不用說它本身非常整齊。