在页面加载后执行Javascript

在页面加载后执行Javascript,javascript,asp.net,Javascript,Asp.net,我是JavaScript新手,在确定事件何时触发方面有点小问题。情况是这样的。我正在写一个ASP.Net应用程序。在我的代码隐藏中,在页面_Load()中我有一些代码。我需要先执行这个代码。在这段代码完成执行之后,我需要我的JavaScript来执行 是否存在确保代码按该顺序执行的事件或其他事件?最简单的方法是将函数调用添加到body的onload事件中 <body onload="yourFunction()"> function yourFunction() { } 没有它返

我是JavaScript新手,在确定事件何时触发方面有点小问题。情况是这样的。我正在写一个ASP.Net应用程序。在我的代码隐藏中,在页面_Load()中我有一些代码。我需要先执行这个代码。在这段代码完成执行之后,我需要我的JavaScript来执行


是否存在确保代码按该顺序执行的事件或其他事件?

最简单的方法是将函数调用添加到body的onload事件中

<body onload="yourFunction()">

function yourFunction() {
}
没有它返回为空

编辑

我没有在您的问题上看到jQuery标记,但是,如果您碰巧正在使用它,您也可以这样做:

$(document).ready(function() {
    //dom is ready
});
或者更简单地说:

$(function() {
    //dom is ready
});

我认为您可能对ASP页面的生命周期有点困惑

每次构建页面时,服务器端(VB/C#)代码中的所有事件都将触发(用户触发的事件除外)。所以初始化、加载、预渲染、渲染、卸载等。。。只有在生成页面后,才会将其发送到浏览器。一旦浏览器控制了它,就可以执行JavaScript


Adam建议的方法是一种可能的方法。不要担心,服务器端脚本总是在客户端脚本之前执行

为了确保Javascript在页面上的所有内容(DOMContent-wise)创建完成后执行,您有几个选项。 您可以将脚本添加到标记的最底部。这实际上是一个很好的实践,因为页面底部的脚本使页面看起来加载速度更快,而且感知性能很重要

正如Adam所说,您还可以使用事件处理程序,例如window.onload=function(){}或window.addEventListener(“load”,function(){},true)。 另一种方法是使用“DOMContentLoaded”而不是“load”,它将在html文件的整个文本部分加载后执行(而不是等待加载所有图像等)。但是,如果将脚本放在页面底部,则不需要这样做

下面是一个示例html文件。请注意,样式表是在顶部定义的,而脚本是在底部定义的

<!DOCTYPE html>
<html>
<head>
<title></title>
<link type="text/css" href="style.css" rel="stylesheet"/>
</head>
<body>
<script type="text/Javascript" src="script.js"></script>
</body>
</html>

正文中包含的脚本在正文加载并按顺序执行时执行。这可以用作跨浏览器解决方案,以确保在加载页面后加载脚本

<!DOCTYPE html>
<html>
<head>
    <!-- scripts loaded in unknown order in some browsers -->
    <script type="text/javascript" src="headscript.js"></script>
</head>
<body>

    <!-- scripts included on body execute in order when the DOM is ready -->
    <script type="text/javascript">
        (function () {
            // do what you want here without trashing global scope
            // you should probably include this as an external script
        }());
    </script>
</body>   
</html>

(功能(){
//在不破坏全局范围的情况下,在此处执行您想要的操作
//您可能应该将其作为外部脚本包含
}());

是的,有几种方法:

a

b

c


我通常不鼓励像这样的内联javascript。实际上,我认为最简单的选择是在正文中包含脚本。如果您正在使用jQuery,那么以这种方式使用它是有意义的,但是我肯定不会仅仅为了这个功能而将jQuery包含在我的项目中。您还声明了一个全局函数,这通常是一个坏主意。@me232-我认为
body onload='foo()'
是为数不多的(仅有的?)允许dom级别0处理程序的地方之一。@AdamRackis这个用例如何赢得我的原谅?@me232-您的原谅?天哪。我只是说使用body onload='foo()'是一个常见的习惯用法,而且通常不会皱眉太严厉。我也提到了脚本可以添加到正文的末尾。我给了op尽可能多的选择could@AdamRackis我想说的是,考虑到您提出的可爱的替代方案,我不知道为什么我们会接受这样的内联javascript,即使其他人认为它是可以接受的。根本没有必要。我确实认为也许你有一个很好的理由,为什么我应该给这个用例一些松懈。我怀疑我最后一句话的语气被误解了:)
<!DOCTYPE html>
<html>
<head>
    <!-- scripts loaded in unknown order in some browsers -->
    <script type="text/javascript" src="headscript.js"></script>
</head>
<body>

    <!-- scripts included on body execute in order when the DOM is ready -->
    <script type="text/javascript">
        (function () {
            // do what you want here without trashing global scope
            // you should probably include this as an external script
        }());
    </script>
</body>   
</html>
$(window).ready(function() 
{
   //Your code goes here
});
$(document).ready(function() 
{
   //Your code goes here
});
window.onload = function() 
 {
  //Your code goes here
 }