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).ready
和Sys.Application.add_load
几乎相同,或者我的理解是这样。 我不确定浏览器执行它们的顺序。
我建议删除Sys.Application.add_load
上的Sys.Application.add_load
包装器调用,这样你就不会尝试连接到已经触发的事件堆栈。
根据最近的博客文章 ,这是FireFox 3中的一个错误(或至少是一个错误)。他建议命名你的重要functionPageLoad
让它跨浏览器工作,虽然我不确定这是否会起作用。