`
linhui_dragon
  • 浏览: 155083 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

window.onload

    博客分类:
  • JS
 
阅读更多
window.onload



简单地讲,window.onload和<body onload="">可以理解成一个,只要有一个就行了,不要同时使用,同时使用的话,在程序能正常运作的情况下,以最后出现的为准;

window.onload的正确用法是【window.onload=function(){ AAAAAAA }】或者【window.onload=XXXX】,<body onload="">的正确用法是【<body onload="BBBBB(),BBBBB()">】,这里的XXXX一定要是不带括号的情况,就比如是【test2】但不能是【test2()】,后面我说明这个原因。多个window.onload定义时,以最后一个为准,前提是代码正确,比如有这样的代码:

window.onload=test1;

window.onload=function(){alert("2");};

window.onload=test3;

最后的结果当然是window.onload=test3;生效。





简单看了一下你的问题真的是太多了,你的基础太差,需要好好补啊。还有DOM和JS的关系与JS操作DOM的知识。



至于你的那些疑问,挑两个来说吧:



一、为window.onload指派新的方法(理解为函数吧),请用window.onload=XXXXX;而不是window.onload(XXXXXX);这样做的后果是你不能保证你想要的结果,因为XXXXXX可能是未知数,某些情况下这样的结果也等同于【window.onload()】,也就是直接启动了window.onload事件,具体的你需要学习一下js的基础。



二、你上面的写法:window.onload(test1,test2(),test3()); 这里产生的结果原理大致是这样的:程序走到这里,看见了【window.onload(】(注意左括号) ,程序读到了左括号就会认为这个是要传递参数了,接下来就应该读括号里的参数情况直到遇到右括号。第一个参数【test】,当普通变量处理了,所以运行的结果就是第一个参数是【undefined】;再往下走,第二个参数【test2()】,当函数处理,所以这个时候会先弹出提示“2”,再把函数的返回值作为参数,但是因为你的函数没有返回值,所以运行的结果就是第二个参数也是【undefined或者true或者false,反正就是未知的】;同样的,走第三个参数时,先运行alert,提示“3”;然后第三个参数还是【undefined或者true或者false】;接下来,终于看到右括号了,程序此时的运行情况就应该是【window.onload(undefined,undefined,undefined);】,由于window.onload是不用参数的,所以这里就等于【window.onload();】所以会执行一次onload事件,而之前的代码中,你的onload事件已经指派为【test1(),test2()】,所以这里会先后弹出1和2。等页面全部加载完,又会因为【body onload="test1(),test2()"】再次执行,再次弹出1和2;所以这里为什么会出现两次1和2,就是因为先有【window.onload()】后有【body onload="test1(),test2()"】,所以整个程序运行的结果就是231212了。同样的原理你后面的【window.onload(test1,test3()); 】会出现31212。



三、window.onload=test3() 和 window.onload=test3 是两个概念,【window.onload=test3() 】运行情况大致是:由于这里是函数【test3()】所以会先执行一下,提示3,然后把函数执行的结果作为等号右边的值要传递给左边,程序此时也就等于【window.onload=undefined 】,显然这个程序没有意义,再往下走,程序遇到了【body onload="test1(),test2()"】,所以会提示1和2,整个下来就是312了。但是【 window.onload=test3 】等同于【window.onload=function test3(){ alert("3");} 】,这里是函数名传递问题。所以只提示3。同时这段代码覆盖了【body onload="test1(),test2()"】。所以不会提示1和2了。



四、window.onload=(test1(),test4()) 这样的写法也是不对的,基本上是先提示1和4,然后程序变成【window.onload=(undefined,undefined) 】,会导致这个程序错误的。

html页面加载是从头加载到尾部,和js还是html无关。js在html头部写,就先加载,如果里面寻找某个元素,这时候页面加载的html还没有加载到,自然找不到对象。建议js都写在html底部。一、不会产生上述的问题。二、利于页面加载速度,页面结构和css先加载,快速让浏览器上显现页面。



来自:http://hi.baidu.com/zhanglp/item/951e90f3728e030384d2788c
分享到:
评论

相关推荐

    脱离document.onload和window.onload的onload事件

    脱离document.onload和window.onload的onload事件,可多次添加加载事件!

    ie中 body onload 和 window onload 解决法案

    在网页开发中,`body.onload` 和 `window.onload` 是两个常见的JavaScript事件处理函数,用于在页面完全加载后执行特定的代码。它们都是用来确保在执行任何操作之前,页面的所有资源(包括HTML、CSS、JavaScript、...

    document.ready和window.onload.docx

    windows

    window.open打开新窗口,不被拦截的方法

    &lt;body onload="window.parent.opener=null;window.close();"&gt; ``` 这段代码的作用是在页面加载完成后立即关闭当前窗口。需要注意的是,这种方式可能也会受到浏览器的弹出窗口拦截机制的影响。为了确保兼容性更好...

    window.addEventListener来解决让一个js事件执行多个函数

    当需要一个事件触发时执行多个函数,单纯地使用`window.onload`或元素的`onclick`等事件处理方式可能会遇到问题,特别是在需要同时处理多个事件处理器时。这时,`window.attachEvent`和`window.addEventListener`就...

    jQuery(document).ready(function($) { });的几种表示方法

    总结来说,`jQuery(document).ready()`提供了一种灵活且高效的处理DOM就绪的方式,而`window.onload()`和`body.onload`更适用于需要等待整个页面加载的场景。理解这些不同方法的用法和区别,可以帮助开发者更有效地...

    Jquery 在页面加载后执行的几种方式

    与`$(document).ready()`不同的是,`window.onload`只能被调用一次,并且需要等待页面上所有资源加载完成,因此它会在`$(document).ready()`之后执行。 ```javascript window.onload = function() { // 你的代码 }...

    实现在HTML页面加载完毕后运行js方法.docx

    有两种常见的方法可以实现这点,一种是使用 `window.onload` 事件,另一种是使用 jQuery 的 `$(document).ready()` 方法。 window.onload 事件 `window.onload` 事件是在页面中的所有元素都已经加载完毕后触发的,...

    Jqyery中同等与js中windows.onload的应用

    在JavaScript中,`window.onload` 是一个非常关键的事件,用于确保在页面所有资源(包括图像、脚本、样式表等)完全加载之后再执行指定的函数或代码块。这通常用于那些依赖于页面元素存在的操作,因为这些操作需要...

    window.open()参数

    &lt;body onload="openwin()"&gt; 任意的页面内容... ``` 4. 同时弹出 2 个窗口: ```javascript &lt;!-- window.open ('page1.html', 'window1', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, ...

    IE11没有window.attachEvent方法处理方法

    window.attachEvent('onload', function() { console.log('页面加载完成'); }); } ``` #### 4. 结论 通过以上方法,我们可以有效地解决IE11不支持`attachEvent`的问题。在实际开发中,建议尽可能采用现代浏览器...

    window.open全攻略

    【Window.open()详解】 在JavaScript中,`window.open()` 是一个非常重要的方法,它用于打开一个新的浏览器窗口或者重载已有的窗口。以下是对这个方法的详细介绍: ### 1. 基本用法 最简单的`window.open()` 使用...

    window.open参数详解.txt

    &lt;body onload="openwin()"&gt; ``` 这段代码表示,当页面加载完成时,会自动执行`openwin()`函数,从而打开配置好的新窗口。同样地,可以通过`onunload`事件在页面卸载时执行相应操作。 此外,还展示了如何通过点击...

    15天漫游jQuery中文翻译word版

    资源名称:15天漫游jQuery中文翻译 word版内容简介:15天漫游jQuery中译本,不是很完整,但是也是学习jquery 不可或缺的东东1 day Window.onload() 一直是常用的javascript函数。数年来程序员们习惯了通过它在...

    js 某个页面监听事件渲染完毕的时间.pdf

    本文将深入探讨如何使用JavaScript来监听页面渲染完成的时间,并对比两种常见方法:`window.onload`和jQuery的`$(document).ready`。 首先,我们来看`window.onload`事件。这个事件会在页面中所有的资源,包括HTML...

    IFrame AND window对象

    2. **页面操作**:`window.onload`和`window.DOMContentLoaded`事件分别在页面完全加载和DOM结构加载完成后触发,用于执行脚本。 3. **窗口大小和位置**:`window.innerWidth`和`window.innerHeight`返回窗口的内部...

    Selenium处理弹出窗口.docx

    selenium会弹出网页窗口,因为它重写了window.open在文件selenium-browserbot.js函数BrowserBot.prototype.modifyWindowToRecordPopUpDialogs中的newOpen,但这必须在window.onload之后创建才有效。对于HTTPS安全性...

    javascript页面加载完执行事件代码

    2. 优先考虑使用window.onload或document.addEventListener('DOMContentLoaded', function() {...})方法,而不是document.onreadystatechange,除非需要根据页面加载状态的细微变化进行处理。 3. 如果页面中有多个...

    js之onload事件的一点使用心得

    首先,必须明确的是,window.onload和window.load并非只是简单的页面加载完成时的事件触发器。具体到window.onload,它的作用是当整个网页(包括所有相关资源如图片、样式表等)加载完成后再执行指定的代码。这意味...

Global site tag (gtag.js) - Google Analytics