Javascript函数应该在每个页面加载时运行

我正在查看我正在维护的asp.net 2 Web应用程序(但没有写)。

在页面加载时应该发生的一些事情不会,但只是有时,似乎是你在VM中使用Firefox 3。 使用JQuery和asp.net Ajax。

应该每次都运行的重要函数(但不是)通过以下Javascript附加:

 //  

但是,如果我使用firebug在ImportantFunction()中设置一个断点,它在firefox 3中的页面加载时不会被击中,但它会在ajax更新中被击中。

在页面中有多次调用$(document).ready,因为它们来自asp.net代码的不同部分。 是的,他们都会执行。

试试这个:

  

将调用Sys.Application.add_load放在ImportantFunction的主体中,即在.js文件中:

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

编辑:我不确定是否可以在$(document).ready事件上添加多个函数。 如果您这样做可能会有所帮助:

  

init您可以包含对所有其他函数的调用,即:

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

它还将使代码更容易阅读:)

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

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

这是ASP.NET AJAX客户端页面生命周期的一部分,内部的所有JavaScript代码都将在每个页面加载时执行,包括异步回发。

你正在使用jQuery附加一个“加载”方法,然后反过来附加一个加载事件,我认为这是你的问题所在。

$(document).readySys.Application.add_load几乎相同,或者我的理解是这样。 我不确定浏览器执行它们的顺序。

我建议删除Sys.Application.add_load上的Sys.Application.add_load包装器调用,这样你就不会尝试连接到已经触发的事件堆栈。

根据最近的博客文章 ,这是FireFox 3中的一个错误(或至少是一个错误)。他建议命名你的重要functionPageLoad让它跨浏览器工作,虽然我不确定这是否会起作用。