事件绑定及深入上-多个window.onload

事件绑定及深入 多个window.onload一起执行

如何让执行两个window.onload
window.onload=function(){
alert(‘Lee‘);
}

if(typeof window.onload==‘function‘){
var saved=null; //保存上一个事件对象
saved=window.onload;
}

//saved就是window.onload,saved()相当于window.onload(),但是window.onload()不能执行的
//所以saved()相当于window.onload=function(){}

window.onload=function(){
if(saved) saved(); //执行上一个事件
alert(Mr.Lee); //执行本事件
}

----------------------------------------------------
//事件切换器
<style>
.red{
width: 100px;
height: 100px;
background:red;
}
.blue{
width: 100px;
height: 100px;
background:blue;
}
</style>

<div id="box" class="red">测试Div</div>

//添加事件函数
//obj相当于window
//type相当于onload
//fn相当于function(){}
function addEvent(obj,type,fn){
//用于保存上一个事件
var saved=null;
//判断事件是否存在
if(typeof obj[‘on‘+type]==‘function‘){
saved=obj[‘on‘+type]; //保存上一个事件
}
//执行事件
obj[‘on‘+type]=function(){
if(saved) saved();
fn.call(this); //把this传递过去
}
}

addEvent(window,‘load‘,function(){
alert(‘Lee‘);
})

addEvent(window,‘load‘,function(){
alert(‘Mr.Lee‘);
})

addEvent(window,‘load‘,function(){
alert(‘Miss.Lee‘);
})

以下代码事件切换:
addEvent(window,‘load‘,function(){
var box=document.getElementById(‘box‘);
addEvent(box,‘click‘,function(){
alert(‘Lee‘);
});
addEvent(box,‘click‘,toBlue);
})

function toRed(){
this.className=‘red‘;
removeEvent(this,‘click‘);
addEvent(this,‘click‘,toBlue);
}

function toBlue(){
this.className=‘blue‘;
removeEvent(this,‘click‘);
addEvent(this,‘click‘,toRed);
}
//当不停的切换的时候,浏览器突然卡死,并且报错:too much recursion,太多的递归
//因为积累了太多的保存的事件,
//解决方案,就是用完的事件,就立刻移除掉

function removeEvent(obj,type){
if(obj[‘on‘+type]) obj[‘on‘+type]=null;
}

时间: 2024-10-05 13:38:49

事件绑定及深入上-多个window.onload的相关文章

window.onload绑定多个事件 —— 两种解决方案

前言 有些函数,必须在网页加载完毕后执行.比如:涉及DOM操作的. 网页加载完毕时会触发一个onload事件,将函数绑定到这个事件上即可. window.onload = myFunction; 问题来了:如果需要同时绑定多个事件,该如何处理呢?有两种解决方法 方案一 创建一个匿名函数,来容纳需要绑定的多个事件,再讲这个匿名函数绑定到onload事件上 1 window.onload = function(){ 2 firstFunction(); 3 secondFunction(); 4 .

JavaScript事件绑定

浏览器事件概述 技术一般水平有限,有什么错的地方,望大家指正. 当我们在浏览网页的时候,浏览器可以在视觉上为我们展示出页面还可以在行为上响应用户的操作,浏览器响应用户的操作就是通过事件来完成的,浏览器提供了事件注册接口和事件监听接口这样浏览器就可以接收用户的行为并且进行处理了.浏览器已经提供很多的事件包括页面加载.鼠标事件以及键盘事件等,我们只需要定义好事件处理函数即可,当用户的操作触发这些事件时就会执行我们预先定义好的处理函数.一个行为的完整过程如下: 浏览器在交互的过程中基本的功能就是通过事

jquery事件绑定

window.onload 和 Jquery $(document).ready() 区别 * 1.用JavaScript的方式window.onload :必须等页面上所有的元素(css/js/图片)传递完毕之 后才去执行 绑定的函数中的代码 2.用JQuery的形式来实现,只要页面中的DOM树形成了,就开始执行(简单理解为传递完当前页面即可执行) * 有无简写形式 window.onload无简写形式 $(document).ready(function(){}) 有简写形式 $(funct

jQuery之元素操作及事件绑定

1.操作元素之属性: ①attr读:("selector").attr("属性名"):=>getAttribute("属性名"):改: ("selector").attr("属性名",值):=>setAttribute("属性名",值):*(*无法访问不再开始标签中存在的prop属性:例:checked,selected,disabled): ②prop读:("se

jQuery事件绑定on()、bind()与delegate() 方法详解

本文转载:啃了一段日子的js相关了,学的过程中发现在jQuery中绑定事件时,有人用bind(),有人用on(),有人用delegate(),还有人用live(),看代码的时候觉得都实现功能了也就掀过去了,只是一直没完全弄懂之间的区别,于是今天查了下资料,自己做个总结. 之所以有这么多类型的绑定方法,是因为jQuery的版本更新的原因,如on()方法就是1.7以后出现的. jQuery的事件绑定api页面上,提到live()方法已经过时,不建议使用.所以这里我们主要就看下以下三个方法:bind(

python tkinter中的事件绑定

一个Tkinter主要跑在mainloop进程里.Events可能来自多个地方,比如按键,鼠标,或是系统事件. Tkinter提供了丰富的方法来处理这些事件.对于每一个控件Widget,你都可以为其绑定方法function. widget.bind(event,handler) 如果相应的event发生了,就会调用handler处理事件.举个例子: 捕获鼠标点击事件: from Tkinter import * root = Tk() def callback(event): print "cl

React中,input外边如果包一个div,可以把input的onChange事件绑定到div上面,并且也生效

最近第一次开始学习封装组件,遇到几个比较神奇的问题. 首先就是如果input外边包一个div,如果把input的onChange事件绑定到div上,也会生效 <div onChange={(e)=>{console.log(e.target.value)}}> <Input/> </div> 还有,如果封装了一个组件,那么里面的最外层元素的{...this.props}需要慎用,虽然这样子做,可以把样式传过来,并且生效,但是会报错 原文地址:https://www

浏览器加载模式:window.onload和$(document).ready()

jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: window.onload = function () {}; //JavaScript等待加载 $(document).ready(function () {}); //jQuery等待加载load和ready区别 window.onload $(document).ready() 执行时机 必须等待网页

浏览器加载模式:window.onload和$(document).ready()的区别(详解)

jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: window.onload = function () {}; //JavaScript等待加载 $(document).ready(function () {}); //jQuery等待加载load和ready区别 window.onload $(document).ready() 执行时机 必须等待网页