给window.onload事件赋不同的参数,执行顺序不一样哦!

本文探讨了在网页开发中使用window.onload事件时的不同赋值方式及其对执行顺序的影响,解释了为何在某些情况下会覆盖成普通全局变量,以及如何正确使用window.onload来确保页面加载完成后执行指定函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给window.onload事件赋不同的参数,执行顺序不一样哦!

这几天敲例子老看到window.onload,有意思的是,每次赋值不同,界面执行函数显示顺序不一样,为什么呢?


一、现象


1 先弹出框——window.onload成了一个普通变量


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<html>  
	<head>  
		<title>Untitled</title>  
			<script type="text/javascript">  

				function ShowMessage()  
				{  alert("true"); }  
				function AlertMessage()
				{  alert("again"); } 
				window.οnlοad=ShowMessage();
				window.οnlοad=AlertMessage();   

			</script>  

	</head>  
	<body>  当你看到true时看不到我 </body>  

</html>  

 

当你看到true的弹出框的时候,你肯定没有看到“当你看到true时看不到我”,说明页面还没有载入完就已经开始执行js了。

PS这样可以同时加载多个函数,只是界面出来的晚。


2 —— 后弹出框——window.onload为事件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<html>  
	<head>  
		<title>Untitled</title>  
			<script type="text/javascript">  
				function ShowMessage()  
					{  alert("true");  } 
				function AlertMessage()
					{alert("again");} 
				window.οnlοad=function(){ShowMessage();}
				window.οnlοad=function(){AlertMessage();}  
			</script>  
	</head> 
	<body>  你看到true时就看到我了  </body>  
</html>  

当你看到弹出框的时候,你也会看到“你看到弹出框时就看到我了”,这个才是真正的页面载入完才触发。但是后一个函数覆盖前一个函数。

PS:该方法使用匿名函数执行,这种形式不可以同时加载多个函数,需要变形:

window.οnlοad=function()

{

    ShowMessage();AlertMessage();

}


二、结论

window.onload必须是赋值为function类型的时候才能够在页面加载完成时被调用其他情况下,就会覆盖成一个普通的全局变量了。

functionShowMessage()  

{  alert("true"); }  

window.οnlοad=ShowMessage();

ShowMessage这个方法执行过后的返回值是undefinedwindow.οnlοad=ShowMessage();相当于执行:ShowMessage();window.οnlοad=undefined;这两句。function对象如果只是赋值,不能够带括号的,你只需要:window.οnlοad=ShowMessage;这样就可以了。带括号表示先执行function,然后将执行结果赋值。




抱歉,我之前的回答中提到的"window.afterload"事件是一个错误的信息。实际上,在标准的 JavaScript 中并存在 "window.afterload" 事件。正确的事件名称是 "window.onload"。 因此,正确的比较应该是 "window.onload" 事件和其他类似的事件,如 "DOMContentLoaded" 事件。 下面是 "window.onload" 事件和 "DOMContentLoaded" 事件之间的区别: 1. 触发时机: - window.onload 事件在整个页面及其所有资源(如图片和脚本)加载完成后触发。 - DOMContentLoaded 事件在页面的 DOM 结构构建完成后触发,需要等待所有资源加载完成。 2. 执行时机: - window.onload 事件会在页面加载完成后立即执行。 - DOMContentLoaded 事件会在页面的 DOM 结构构建完成后立即执行。 3. 绑定方式: - window.onload 事件可以使用 JavaScript 代码或者 HTML 标签的方式来绑定。 - DOMContentLoaded 事件只能通过 JavaScript 代码来绑定。 4. 覆盖问题: - 如果在页面中存在个绑定给 window.onload函数,只有最后一个函数会被执行。 - 如果在页面中存在个绑定给 DOMContentLoaded 的函数,它们会按顺序依次执行。 总结来说,window.onload 事件在整个页面及其资源加载完成后触发,而 DOMContentLoaded 事件则是在页面的 DOM 结构构建完成后触发。它们的执行时机和绑定方式有所不同。 希望这样能够解答你的问题。如果还有其他疑问,请随时提问。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值