`
linhui_dragon
  • 浏览: 149340 次
  • 性别: 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事件,可多次添加加载事件!

    15天漫游jQuery中文翻译word版

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

    Selenium处理弹出窗口.docx

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

    Web前端开发工程师笔试题及答案

    腾迅Web前端开发工程师笔试题及答案 ...function elementName(evt){ evt = evt|| window.... window.onload = function(){ var el = document.getElementsByTagName('body'); el[0].onclick = elementName; } ......

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

    其中,window.onload方法是页面所有资源加载完成之后触发,因此性能较差;(document).ready方法是在页面dom元素加载完成之后触发,性能较好。 总体而言,页面渲染完毕时间监听是前端开发中一个非常重要的环节,能够...

    shake.js应用和资源

    window.onload = function() { var myShakeEvent = new Shake({ threshold: 15 }); myShakeEvent.start(); window.addEventListener('shake', shakeEventDidOccur, false); function ...

    js 进度条demo.html

    window.onload = function () { window.setInterval("ajaxpage('dummy/top.txt','top',{color:'blue',opacity:0.25})", 3000); window.setInterval("ajaxpage('dummy/left.txt','left',{color:'black', opacity:...

    HTML5跨年烟花动画效果

    window.onload = function(){ initAnimate() } function initAnimate(){ drawBg(); lastTime = new Date(); animate(); } var lastTime; function animate(){ ctx.save(); ctx....

    onload和jquery运行顺序

    window.onload = function () { console.log('window.onload 方式执行') } $(document).ready(function () { console.log('$(document).ready(function(){}) 方式执行') })

    CSS40个布局实例

    window.onload=function(){SetWidth()}; window.onresize=function(){SetWidth()}; function SetWidth(){ if(!document.getElementById) return; var w=$("gallery").offsetWidth-20; if(w&gt;0 && w!=null){ $(...

    商品宣传微页.zip

    JS知识点:1.window.onload记得关闭加载动画 2.判断是否手机端 3.js封装了个缓动动画。 喜欢的可以打开下面的网页另存下载下来!代码乱的可以[捂脸]!很纯很净[奸笑]!原汁原味[机智]!背景音乐还可以,点击就可以听...

    video.js 基于js的video标签视频播放插件,简单上手

    window.onload = function(){ oVdo = new Video({ name:"video", time:[ {"src":"./video/22.mp4","title":"shangjiahang@tinysoft"}, {"src":"./video/23.mp4","title":"shangjiahang1@tinysoft"}, {"src":"....

    html5手机微信端网页获取微信会员资料微信头像昵称openid,asp、php、jsp、js、ajax微信网站微信登录接口源码

    本微信登录代码主要适用于手机微信网页的会员登录功能,无需有公众号,无需申请开通开放平台,只需要网站上镶上本代码,即可实现微信网站自动登录,自动获取... } }//获取url中传递过来的值window.onload = function(){

    jQuery实例教程

    (也许window.onload()能实现同样的功能,但是jQuery更加快速,灵活)。 $(document).ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。这是事件模块中最重要的一个函数,因为它可以极大地提高web...

    返回顶部按钮elevator.js.zip

    window.onload = function() {  var elevator = new Elevator({  mainAudio: '/src/to/audio.mp3',  endAudio: '/src/to/end-audio.mp3'  }); } // You can run the elevator, by calling. ...

    【JavaScript源代码】JS实现点击掉落特效.docx

    JS实现点击掉落特效  js实现点击掉落特效 ... charset=utf-8"&gt; 无标题文档&lt;/title&gt; &lt;script src="jquery.js"&gt;&lt;/script&gt; &lt;script&gt; window.onload = function () { var str = ''; var len = 20; var aDiv = docu

    【JavaScript源代码】JavaScript canvas实现七彩太阳光晕效果.docx

    JavaScript canvas实现七彩太阳光晕效果 ...DOCTYPE html&gt;  &lt;html lang="en"&gt;  &lt;head&gt;   &lt;meta charset="UTF-8"&gt; , initial-scale=1.0"&gt; &lt;title&gt;Document&lt;/title&gt; &lt;script&gt; window.onload=f

    jQuery的鼠标拖动翻页js特效代码.zip

    window.onload=function(){ page=id("menu").getElementsByTagName("div"); if(page.length&gt;0){ page[0].style.zIndex=2; } for(i=0;i&lt;page.length;i ){ page[i][removed] ="&lt;span class=\"tip\"&gt;" (i 1) "/" ...

    实现原生js随机点菜的代码.zip

    window.onload = function(){ var btn = document.getElementById('btn'); var cm = document.getElementById('cm'); // 获取html中的菜单 var menu = document.getElementsByTagName('span'); var ...

Global site tag (gtag.js) - Google Analytics