2009-01-06 90 views
0

我正在看我維護(但沒有寫)的asp.net 2 web應用程序。Javascript函數應該在每個頁面加載運行

應該在頁面加載時發生的一些事情不會,但只是有時會發生,而且好像是在虛擬機內使用Firefox 3。使用JQuery和asp.net Ajax。

應該每次運行(但不)是由下面的JavaScript連接的重要作用:

<script type="text/javascript"> 
//<![CDATA[ 
$(document).ready(function(){ Sys.Application.add_load(ImportantFunction); }); 
$(document).ready(function(){ Otherstuff(); }); 
$(document).ready(function(){ MoreStuff(); }); 
//]]> 
</script> 

但是,如果我使用Firebug設置裏面ImportantFunction()斷點,不打在firefox 3中加載頁面,但它在ajax更新中被擊中。

在頁面中有多個調用$(document).ready,因爲它們來自它後面的不同部分的asp.net代碼。是的,他們都執行。

回答

1

試試這個:

<script type="text/javascript"> 
//<![CDATA[ 
$(document).ready(ImportantFunction); 
$(document).ready(Otherstuff); 
$(document).ready(MoreStuff); 
//]]> 
</script> 

把呼叫Sys.Application.add_load體內的ImportantFunction,即在你的.js文件:

function importantFunction() 
{ 
    Sys.Application.add_load(ImportantFunction); 
} 

編輯:我不知道,如果它的可能添加多個功能以在$(document).ready事件上運行。它可以幫助,如果你這樣做,而不是:

<script type="text/javascript"> 
    //<![CDATA[ 
    $(document).ready(init); 
    //]]> 
    </script> 

而且在init您可以包括所有其他函數的調用,即:

function init() 
{ 
    importantFunction(); 
    otherStuff(); 
    moreStuff(); 
    //Any other functions to be called upon page load go here 
} 

這也將使得代碼更易於閱讀:)

+0

無論如何還是給我舉個例子吧,它適用於我,所以它也可以適用於你。 – 2009-01-06 13:18:46

+0

我查過的帖子表明您可以將多個代碼塊附加到$(document).ready。 http://www.learningjquery.com/2006/09/multiple-document-ready – Anthony 2009-01-06 13:25:15

1

根據此recent blog posting,這是FireFox 3中的一個錯誤(或至少是錯誤的)。他建議命名您的重要函數PageLoad以使其能夠跨瀏覽器工作,但我不確定這是否可行或不。

+0

該函數在庫中並在其他地方調用,所以我不打算重命名它。但我可以做一個包裝。 – Anthony 2009-01-06 12:49:37

2

你正在使用jQuery來附加一個「加載」方法,然後依次附加一個加載事件,我認爲這是你的問題所在。

$(document).readySys.Application.add_load幾乎是一樣的,或者所以我的理解。我不確定瀏覽器會以什麼順序執行它們。

我建議刪除Sys.Application.add_load包裝調用ImportantFunction,所以你沒有試圖附加到已經發射的事件堆棧。

5

是否有任何理由不能使用ASP.NET AJAX pageLoad函數而不是$(document).ready()?

function pageLoad(sender, args) 
{ 
    ImportantFunction(); 
    OtherStuff(); 
    MoreStuff(); 
} 

這是ASP.NET AJAX客戶端頁面生命週期和所有的JavaScript代碼裏面將在每個頁面加載執行,包括異步回發的一部分。