我正在查看一个我正在维护(但没有编写)的asp.net 2 web应用程序。
一些在页面加载时应该发生的事情并没有发生,但只是偶尔发生,如果你在虚拟机中使用Firefox3,似乎是这样的。使用了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()中设置断点,在Firefox3中页面加载时不会命中断点,但在ajax更新时会命中断点。
在页面中有多个对$(document).ready的调用,因为它们来自于它背后的asp.net代码的不同部分。是的,它们都是执行的。
发布于 2009-01-06 13:00:42
试试这个:
<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
}它还将使代码更易于阅读:)
发布于 2009-01-06 13:10:52
为什么不能使用ASP.NET AJAX pageLoad函数代替$(document).ready()?
function pageLoad(sender, args)
{
ImportantFunction();
OtherStuff();
MoreStuff();
}这是ASP.NET AJAX客户端页面生命周期的一部分,其中的所有JavaScript代码都将在每次页面加载时执行,包括异步回发。
发布于 2009-01-06 12:55:34
您正在使用jQuery附加一个" load“方法,然后该方法又附加一个load事件,我认为这就是您的问题所在。
$(document).ready和Sys.Application.add_load几乎是一样的,至少我是这么理解的。不过,我真的不确定浏览器将以哪种顺序执行它们。
我建议删除ImportantFunction上的Sys.Application.add_load包装器调用,这样您就不会尝试附加到已经触发的事件堆栈。
https://stackoverflow.com/questions/416363
复制相似问题