首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每次加载页面时都应运行Javascript函数

每次加载页面时都应运行Javascript函数
EN

Stack Overflow用户
提问于 2009-01-06 12:41:18
回答 4查看 9.5K关注 0票数 0

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

一些在页面加载时应该发生的事情并没有发生,但只是偶尔发生,如果你在虚拟机中使用Firefox3,似乎是这样的。使用了JQuery和asp.net Ajax。

下面的Javascript附加了每次都应该运行(但没有运行)的重要函数:

代码语言: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代码的不同部分。是的,它们都是执行的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-06 13:00:42

试试这个:

代码语言:javascript
复制
<script type="text/javascript">
//<![CDATA[
$(document).ready(ImportantFunction);   
$(document).ready(Otherstuff);
$(document).ready(MoreStuff);
//]]>
</script>

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

代码语言:javascript
复制
function importantFunction()
{
   Sys.Application.add_load(ImportantFunction);
}

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

代码语言:javascript
复制
<script type="text/javascript">
    //<![CDATA[
    $(document).ready(init);   
    //]]>
    </script>

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

代码语言:javascript
复制
function init()
{
   importantFunction();
   otherStuff();
   moreStuff();
   //Any other functions to be called upon page load go here
}

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

票数 1
EN

Stack Overflow用户

发布于 2009-01-06 13:10:52

为什么不能使用ASP.NET AJAX pageLoad函数代替$(document).ready()?

代码语言:javascript
复制
function pageLoad(sender, args)
{
     ImportantFunction();
     OtherStuff();
     MoreStuff();
}

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

票数 6
EN

Stack Overflow用户

发布于 2009-01-06 12:55:34

您正在使用jQuery附加一个" load“方法,然后该方法又附加一个load事件,我认为这就是您的问题所在。

$(document).readySys.Application.add_load几乎是一样的,至少我是这么理解的。不过,我真的不确定浏览器将以哪种顺序执行它们。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/416363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档