2011-04-12 80 views
4

我已經將JavaScript代碼添加到了我的Drupal 7主題,但由於它的預期運行失敗,因爲當我的函數被觸發時,css沒有正確應用。
所以我試了一個最小的實現來檢查發生了什麼。在頁面完全渲染後加載JavaScript

jQuery(document).ready(function($) { 

     alert("Start"); 

    } 

alert()頁面完全加載(即所有的標題缺失)之前被觸發。 我該如何預防?

+0

這個問題似乎與Drupal沒有關係。 – kiamlaluno 2011-04-12 21:20:33

+0

它與Drupal有關。這是一個Drupal站點,JQuery是自6.x以來的Drupal核心的一部分,這是關於Drupal的行爲。 – 2011-04-12 21:44:40

+2

這個問題顯然與Drupal相關,而Drupal處理「頁面加載」事件的方式並不是通常的jQuery方式(請參閱業餘咖啡師的回答)。請將它移回Drupal答案。 – 2011-04-13 06:09:28

回答

10

爲了執行一個腳本後,一切都滿載你想:

$(window).load(function(){ 
    alert('hello'); 
}); 

jQuery.ready()儘快執行的DOM準備好了,這是外部資源已加載通常前。

+2

這樣做的「Drupal方法」是使用Drupal的行爲,這個例子是一個不好的做法。請閱讀http://drupal.org/node/756722中的行爲部分。 – 2011-04-12 21:45:29

+2

我使用Drupal行爲(這就是爲什麼我在Drupal Stack Exchange上提交這個問題),但實際上我的問題實際上與缺少的窗口負載有關。 – pasine 2011-04-12 22:02:18

+0

不要1)使用$沒有包裝它在外部的上下文,2)使用jQuery(window).load(...),但Drupal.behaviors。見業餘咖啡師的答案中的鏈接。 – 2011-04-13 06:06:56

3

閱讀關於Drupal 7 JavaScript API here。你想關注行爲部分。在您的示例中,行爲與您嘗試做的事情相同,但是,在加載Drupal頁面時,它所做的第一件事情之一是實例化Drupal對象。該對象通過行爲屬性被每個模塊擴展。當您在文檔準備好時使用Drupal行爲而不是標準JQuery時,您可以在JavaScript函數中訪問由其他模塊定義的所有屬性和方法。

這些教程(12)適用於Drupal 6,但它們會爲您提供有關Drupal行爲的良好解釋和想法。

+0

OP請求一旦加載了外部資源(這裏是CSS)就運行JavaScript。行爲在這裏沒有幫助。由於OP也使用jQuery(document).ready作爲非工作代碼的示例,因此此答案仍然相關。 – 2014-02-05 19:58:21