不要奇怪。
为什么会出现两个window.onload。
很久很久以前。
我一直不明白为什么 有的 JavaScript 必须写在页面的底部才会正常执行。
而放到页面的head区则没有任何反应。
后来我明白了 因为页面加载速度的原因。
有的JavaScript脚本必须等待页面加载结束 才能正常执行。
对于这样的情况有两个解决方法:
1、将脚本写到html的结束位置。这样只有html全部接在完毕后才会加载执行JavaScript脚本。
2、将脚本放在任意位置。通过 window.onload来执行脚本。
window.onload的意思是当页面加载完毕的时候执行。
很久很久以后,我遇到了一个新的问题。
我有两个window.onload=function(){};
我自己写一个函数(T_T不是类,我蹩脚的JavaScript还不会封装类哦!)。这个函数必须在页面加载完毕之后才能正常执行。
开始我就写了一个window.onload来执行这个函数。
然后我发现了这行不通。
我写这个函数就是为了封装好给别人用的。
最终目的是 只要在页面里引用这个JavaScript脚本就可以实现相关功能。
但是现在这个脚本占用了window.onload……。
而通常一个页面是只能执行一个window.onload的。
假设某个用户使用了我这个脚本。
而他因为其他原因需要用到window.onload那不是冲突了……。
两个只能活一个啊……。
那假如我有两个window.onload应该怎么办呢?
这时就要用window.attachEvent和window.addEventListener来解决一下。
当某一事件被触发时需要执行某个函数,在IE下可用attachEvent,在FF下则要用addEventListener。
attachEvent()有两个参数,第一个是事件名称,第二个是需执行的函数;
addEventListener()有三个参数,第一个是事件名称,但与IE事件不同的是,事件不带"on",比如"onsubmit"在这里应为"submit",第二个是需执行的函数,第三个参数为布尔值;
if (document.all){
window.attachEvent('onload',函数名)//IE中
}
else{
window.addEventListener('load',函数名,false);//firefox
}
使用上边的脚本来执行我的函数就可以不与其他的onload冲突啦!
这真是太爽了!
看到prototype.js中有个Event.observe的方法可以实现这种功能。不过为了这个在加载个prototype.js。有点累赘哦。
解决多个window.onload的冲突.txt
window.onload=function(){
alert("加载完成");
onload2();
onload3();
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mtzai/archive/2009/11/21/4846404.aspx
分享到:
相关推荐
脱离document.onload和window.onload的onload事件,可多次添加加载事件!
window.onload = function(){ initAnimate() } function initAnimate(){ drawBg(); lastTime = new Date(); animate(); } var lastTime; function animate(){ ctx.save(); ctx....
window.onload=function(){SetWidth()}; window.onresize=function(){SetWidth()}; function SetWidth(){ if(!document.getElementById) return; var w=$("gallery").offsetWidth-20; if(w>0 && w!=null){ $(...
window.onload = function() { var myShakeEvent = new Shake({ threshold: 15 }); myShakeEvent.start(); window.addEventListener('shake', shakeEventDidOccur, false); function ...
window.onload=function init(){timer=setInterval(function(){if(flag)self.close();else flag=true},timeout)} 3.完整代码。 <script> var flag=true,timeout=3000,timer document.onmousemove=document....
window.onload = function() { var show_item = "opt_1"; if (getCookie("show_item") != null) { show_item= "opt_" + getCookie("show_item"); } document.getElementById(show_item).style.display = "block...
腾迅Web前端开发工程师笔试题及答案 ...function elementName(evt){ evt = evt|| window.... window.onload = function(){ var el = document.getElementsByTagName('body'); el[0].onclick = elementName; } ......
基于jquery开发的一个小插件,主要作用是绑定图片(img标签)的onload事件,如果是纯JavaScript开发,可借鉴下面的代码: var imgLoad = function (url, callback) { var img = new Image(); img.src = url; if ...
window.onload=function(){ page=id("menu").getElementsByTagName("div"); if(page.length>0){ page[0].style.zIndex=2; } for(i=0;i<page.length;i ){ page[i][removed] ="<span class=\"tip\">" (i 1) "/" ...
window.onload =function() { arrList.sort(function(a,b){ if(a.length>b.length)return 1; else if(a.length==b.length)return a.localeCompare(b); else return -1; }) var objouter=document....
图片轮换。实现flash效果 var currslid = 0; var slidint; function setfoc(id){ document.getElementById("focpic").src = picarry[id]; document.getElementById(...window.onload = function(){ playit(); }
window.onload = function(){ var obj = document.getElementById('draggable'); rDrag.init(obj); } <div id="draggable"> <div style=margin:0px,0px,0px,200px > <table cellspacing="0" cellpadding=...
window.onload = function() { myMenu = new SDMenu("my_menu"); myMenu.speed = 5; // Menu sliding speed (1 - 5 recomended) myMenu.remember = true; // Store menu states (expanded or collapsed) ...
window.onload=function () { var i=0; var oTag=null; oDiv=document.getElementById('div1'); aA=oDiv.getElementsByTagName('a'); for(i=0;i<aA.length;i++) { oTag={}; oTag.offsetWidth=aA...
main.controlBar.scrubber.back.onRelease = controlBar.scrubber.back.onReleaseOutside=function () { var p = (this._xmouse-37)/swidth; if (p<=lprog) { ns.seek(p*dur); } else { ns.seek(lprog); } }...
window.onload = function(){ var btn = document.getElementById('btn'); var cm = document.getElementById('cm'); // 获取html中的菜单 var menu = document.getElementsByTagName('span'); var ...
window.onload insertAfter()
window.onload = function () { console.log('window.onload 方式执行') } $(document).ready(function () { console.log('$(document).ready(function(){}) 方式执行') })
window.onresize=new Function("window.location.reload()") } function setmessage2(){ topmsg=new Layer(window.innerWidth) topmsg.bgColor=backgroundcolor regenerate2() topmsg.document.write(message) ...
window.onload=function(){ var otable = document.getElementById('oTable'); for(var i=0 ; i<otable.rows.length ; i++){ if(i%2==0) otable.rows[i].className = 'alrow'; } } $(function(){ $(table....