2011-12-07 154 views
2

我是JavaScript新手,在事件触发时遇到轻微问题。这是情况。我正在编写一个ASP.Net应用程序。在我的代码后面,在Page_Load()中我有一些代码。我需要这个代码先执行。此代码完成执行后,我需要执行我的JavaScript。已加载页面后执行Javascript

是否存在确保代码按顺序执行的事件或存在的东西?

回答

8

最简单的方法是将你的函数调用添加到您的身体的onload事件

<body onload="yourFunction()"> 

function yourFunction() { 
} 

或者,您也可以放置一些脚本在你的身体很。这里的任何脚本都会在处理正文后执行。你就可以做这样的事情

var divElement = document.getElementById("divId"); 

没有它回来为空。

编辑

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

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

或者更简单地说:

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

完美。谢谢! – user489041

+0

我通常不会像这样鼓励内联JavaScript。我其实觉得最简单的选择是将脚本包含在主体中。如果您在使用jQuery那么它有一定道理,以这种方式使用它,但我肯定不会在我的项目只为这一功能包括jQuery的。你还宣布了一个全球性的功能,这通常是一个坏主意。 –

+0

@ me232 - 我以为'身体的onload =“富()”'是其中的DOM 0级处理器通常被容忍的少数地方之一(只?)。 –

1

我想你可能会对ASP页面的生命周期有些困惑。

每次构建页面时,服务器端(VB/C#)代码中的所有事件都会触发(用户触发的事件除外)。因此Init,Load,PreRender,Render,Unload等等......只有在页面建好之后,才会将它发送到浏览器。一旦浏览器持有它然后您的JavaScript可能会被执行。

亚当建议的方式是这样做的一种可能方式。

1

不要担心,服务器端脚本将始终在客户端方脚本之前执行。

为了确保在页面上的所有内容(DOMContent-wise)创建之后执行Javascript,您有几个选项。 您可以将脚本添加到标签的最底部。这实际上是一种很好的做法,因为页面底部的脚本使页面加载速度更快,并且感知的性能非常重要。作为亚当说,你也可以使用事件处理函数,如window.onload = function(){}或window.addEventListener(“load”,function(){},true)。 另一种方法是使用“DOMContentLoaded”而不是“加载”,一旦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> 
3

脚本包括在主体上时的身体加载和他们为了执行执行。这可以用作跨浏览器解决方案,以确保在加载页面后加载脚本。

<!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> 
+1

+1用于保持全球范围的完美清洁 –

1

是的,有几种方法去:

一个。

$(window).ready(function() 
{ 
    //Your code goes here 
}); 

b。

$(document).ready(function() 
{ 
    //Your code goes here 
}); 

℃。

window.onload = function() 
{ 
    //Your code goes here 
} 
相关问题