2012-06-01 28 views
2

只是一個簡單的問題,我遵循在關閉主體之前將所有Javascript文件保留在文檔底部的做法。但是我想調用一個函數,它會在JS包含之前出現,從而失敗。Javascript底部,函數調用在身體?

有沒有辦法讓這個功能在不移動文件的情況下工作?

乾杯!

+1

爲什麼你的身體內函數調用需要在那裏,而不是在你的JS的其餘部分的身體結束? – lanzz

+0

函數是直接調用還是由某個事件調用? – Sirko

+0

通常我不會這樣做,但我必須將其工作到一個CMS.Yes,這是一個直接的函數調用 - 沒有事件 – JCraine

回答

1

是你可以用你的函數與

window.onload = function() { 
    //call to your function here 
}; 

,但可能這種解決方案是更好,如果你可以修改你的頁面的底部:
Stop paying your jQuery tax

+0

這很有用,非常感謝!很好,很簡單:D – JCraine

0

是,使用$(document).ready()功能沃爾是在dom加載後調用,所以你所有的js函數都是已知的。

$(function(){ 
    //do stuff here 
} 

但您的jQuery文件必須在該調用之前。

如果你不想使用jquery-它取決於你如何聲明函數。如果你使用var或者不使用var,那麼就有區別。對這個樣品一看:

function FunctionDefinitionOrder() { 
    assert(isRed(), "Named function definition doesn't matter");   
    assert(isGreen === undefined, "However, it's not the case with anonymous functions"); 

    function isRed() { return true; } 
    var isGreen = function() { return true; }; 

    assert(isGreen(), "Anonymous functions are known only after the definition"); 
} 
+0

因爲他把所有的JS加載到body的最後,所以我懷疑他能夠使用jQuery – lanzz

1
$(document).ready(function() { 
    // put all your jQuery goodness in here. 
}); 

檢查這個網址:ready

+0

JQuery本身被引用在頁面底部,所以使用$符號會給出一個錯誤 –

1

您也可以撥打從html文件的功能:

<body onload="yourFunction()"> 

和.js文件

定義它
0

如果你沒有在body onload事件中調用函數,你應該可以調用即使功能位於頁面底部,也可以在頁面的任何位置使用該功能。在加載頁面時,瀏覽器會加載找到的所有功能,因此當頁面準備就緒時,所有功能都可用。如果沒有找到該功能,你要麼

  • 調用它時(不太可能)

  • 沒有在JS包含腳本標籤之間的誤差拼錯函數名要調用的函數

在第二種情況下,檢查JS控制檯是否有錯誤。您還可以嘗試將函數調用替換爲單獨的腳本標記中包含的另一個函數,只是輸出警報消息。如果這個調用能夠工作,但是對你的「真實」函數的調用卻沒有,那麼JS代碼中的某個地方會出現錯誤,導致函數無法加載。