2010-01-05 58 views
3

我需要能夠在jQuery中調用document.ready()之前插入或調用函數。我從另一個文件中調用document.ready函數,理論上我可以控制何時調用document.ready。在jQuery的document.ready之前調用/插入函數

的源文件(.js文件):

$(document).ready(function() { 
    // some code... 
}); 

技術上,然而,當我打電話用的document.ready(文件),則立即加載,我沒有找到的東西的機會類似於插入和調用我的函數的前提條件。

測試文件(也一個.js):

// this is a unit testing file, JsTestDriver style 
TestFunction.prototype.testFunction = function() { 
    // calls my function 
    // then calls the document.ready function below 
    $.readyList[1](); 
} 

由於我來自一個.js單元測試文件調用的document.ready功能,「腳本」標籤沒有爲我工作。我需要能夠在DOM(或document.ready)被調用之前調用我的函數。有人知道這個答案嗎?

謝謝。

+0

你可以加載一個頁面的東西,然後重定向到不同的頁面?不是很棒的技術,但是你在做什麼聽起來非常糟糕。準備工作已經成爲在事件發生前執行的一個竅門 – SapphireSun 2010-01-05 03:52:38

+0

如果您想在DOMReady事件之前調用某些東西,請不要將它放在事件包裝器中,或者將您的先決條件包含在其餘包含的腳本中的腳本。 – 2010-01-05 04:44:19

回答

2

將您希望在document.ready之前執行的代碼放置在document.ready之前。

+0

我曾試過,沒有成功。在測試文件中,一旦TestFunction.prototype.testFunction啓動,document.ready已經被加載(我看到它帶有警報)。在源文件中,這是不可能的,因爲我只調用了document.ready函數,而不是之前或之後的代碼。 – BeraCim 2010-01-05 06:05:27

0

覆蓋ready函數。

var fn = $.fn; 
var realReady = fn.ready; 
fn.ready = function ready() 
{ 
    console.log("Before ready."); 
    var result = realReady.apply(this, arguments); 
    console.log("After ready."); 
    return result; 
};