CTRL+shift+/* 或者// 代表注释
时间处理程序
跨浏览器封装对象
事件处理程序
//IE事件处理程序
undefined
//一个叫attachevent和detachevent,只需要告诉他事件处理程序的名称和事件处理程序的函数,会发现去掉了第三个布尔值,是因为ie默认是冒泡模式
undefined
//在这里面和dom事件的区别就是需要把on加上,记住在添加和删除的时候传入的参数要一样
undefined
//在Chrome里面是不能用attach和detach的,但是在ie里面使用add和delete的时候就不能用attach和detach了,这个时候就要跨浏览器操作
undefined
//跨浏览器操作是可以通过构建对象的方式来实现,
undefined
var eventUtil = {
addHandler:function(element,type,handler){
if(element.addEventListener){
element.addEventListener(element,type,handler);
}
}
}
undefined
var eventUtil = {
addHandler:function(element,type,handler){
if(element.addEventListener){//非IE
element.addEventListener(type,handler,false);
}
else if(element.attachEvent){//IE浏览器的
element.attachEvent('on'+type,handler);
}
else{//dom0级别的
elsement['on'+type] = hanler;//记住所有能用.的地方都可以用【】,只不过用.方便点
}
}
}
undefined
//上面就得到了一个被封装好的添加和删除的对象,这样就实现了跨浏览器的操作
undefined
//在调用的时候
undefined
2138:1 Unchecked runtime.lastError: The message port closed before a response was received.
eventUtil.addHandler(element,type,handler)
IE事件处理程序
attachEvent()添加事件
detachEvent()删除事件
接受两个相同的参数:事件处理程序的名称和事件处理程序的函数
IE事件处理程序:
attachEvent()添加事件
detachEvent()删除事件
接收相同的两个参数:事件处理程序的名称(加on)和事件处理程序的函数
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>
<input type="button" value="HTML事件" id="btn" onclick="showMes()">
<input type="button" value="DOM0事件" id="btn2">
<input type="button" value="DOM2事件" id="btn3">
<input type="button" value="IE事件" id="btn4">
</div>
<script type="text/javascript">
//HTML事件,将触发事件放在HTML里面。可以直接写,也可以封装。
function showMes(){
alert("hello world");
}
var d=document;
var btn2=d.getElementById("btn2"),
btn3=d.getElementById("btn3"),
btn4=d.getElementById("btn4");
//DOM0事件,在js里触发事件,便于修改;当触发的事件=null为删除该事件。
/*btn2.onclick=function(){
alert("这是通过DOM0级添加的事件");
}
btn2.onclick=null;*/ //null不加引号。删除事件后,点击按钮将不再跳出弹框。
//DOM2事件,处理事件addEventListener("其包括三个参数,触发、函数、false"),删除事件removeEventLiatener("同样包含三个参数")。
//注意:DOM2的触发事件不加“on”,且此方法不支持IE浏览器。
/*btn3.addEventListener("click",showMes,false);
btn3.removeEventListener("click",showMes,false);*/
//IE事件
//IE8以及更早浏览器只支持事件冒泡
//添加事件attachEvent("其包含两个参数,触发、函数(触发需要加‘on’)"),删除事件detachEvent("统一包含两个参数")。
//btn4.attachEvent("onclick",showMes);
//btn4.detachEvent("onclick",showMes);
//封装一个DOM0,DOM2,IE事件,谁行谁用上。
var eventutil={
addhandler:function(element,type,handler){
if(element=addEventListener){
element=addEventListener(type,handler,false);
}else if(element=attachEvent){
element=attachEvent('on'+type,handler);
}else{
element['on'+type]=handler;
}
},
removehandler:function(element,type,handler){
if(element=removeEventListener){
element=removeEventListener(type,handler,false);
}else if(element=detachEvent){
element=detachEvent('on'+type,handler);
}else{
element['on'+type]=handler;
}
}
}
eventutil.addhandler(btn3,'click',showMes);
eventutil.removehandler(btn3,'click',showMes);
</script>
</body>
</html>
node.addEventListener(eventName, function, eventType) node.removeEventListener(eventName, function, eventType)
function showMes() {
alert('Hello world!');
}
var btn2 = document.getElementById('btn2');
var btn3 = document.getElementById('btn3');
btn2.onclick = function () {
alert('这是DOM0级事件');
}
btn2.onclick = null;
// //DOM2级事件
// btn3.addEventListener('click',showMes,false);
// btn3.removeEventListener('click',showMes,false);
// btn3.attachEvent('onclick',showMes);
// btn3.detachEvent('onclick',showMes);
var eventUtil = {
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, handler);
} else {
element['on' + type] = handler;
}
},
removeHandler: function (element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.detachEvent) {
element.detaachEvent('on' + type, handler);
} else {
element['on' + type] = handler;
}
}
}
eventUtil.addHandler(btn3, 'click', showMes);
eventUtil.removeHandler(btn3, 'click', showMes);
function showMes() {
alert('Hello world!');
}
var btn2 = document.getElementById('btn2');
var btn3 = document.getElementById('btn3');
btn2.onclick = function () {
alert('这是DOM0级事件');
}
btn2.onclick = null;
// //DOM2级事件
// btn3.addEventListener('click',showMes,false);
// btn3.removeEventListener('click',showMes,false);
// btn3.attachEvent('onclick',showMes);
// btn3.detachEvent('onclick',showMes);
var eventUtil = {
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, handler);
} else {
element['on' + type] = handler;
}
},
removeHandler: function (element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.detachEvent) {
element.detaachEvent('on' + type, handler);
} else {
element['on' + type] = handler;
}
}
}
eventUtil.addHandler(btn3, 'click', showMes);
eventUtil.removeHandler(btn3, 'click', showMes);
跨浏览器解决方法:封装在一个对象EventUtil 内
变量和字符串不能用 . 连接
在js中,连接一个属性时,所有用 . 的地方都可以用【】连接
element.onclick等价于 element['onclick']
IE事件处理程序
attachEvent(事件,事件触发的函数)//添加事件,事件+on
detachEvent('onclick',showMes)//删除事件
ctrl shift / 注释
IE 事件处理程序
attachEvent() 添加事件
detachEvent() 删除事件
接收相同的两个参数:事件处理程序的名称和事件处理程序的函数
不使用第三参数的原因:IE8 以及更早的浏览器版本只支持事件冒泡!
跨浏览器的事件处理程序
var eventUtil={ //添加句柄 addHandler:function(element,type,handler//){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent//('on'+type,handler); }else{ element['on'+type]=handler;//DOM0级事件处理程序判断 } }, //删除句柄 removeHandler:function(element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if(element.detachEvent){ element.detachEvent//('on'+type,handler); }else{ element['on'+type]=null;//DOM0级事件处理程序判断 } } } eventUtil.addHandler(btn3,'click',showMes); eventUtil.removeHandler(btn3,'click',showMes);
Dom0级事件处理程序:
直接在元素后添加方法:Btn.onclick = function(){} 或 Btn['click'] = function()[]
Dom2级事件处理程序:
addEventListener() 、 removeEventListner()
IE事件处理程序:
attachEvent() 、detachEvent();
IE事件处理程序
js
对对象方法名的修改后 与原对象连接的操作:"."---->"[]"
IE 事件处理程序
attachEvent() 添加事件
detachEvent() 删除事件
接收相同的两个参数:事件处理程序的名称和事件处理程序的函数
不使用第三参数的原因:IE8 以及更早的浏览器版本只支持事件冒泡!
跨浏览器解决——》添加句柄:
这里为什么添加句柄?
句柄一般什么时候使用
句柄是什么?
句柄的格式一般如何?
调用的格式?
解决跨浏览器事件处理:
IE事件处理程序
IE事件处理
跨浏览器事件处理程序
type = click;
element.onclick === element['on' + type]===element['onclick']
事件处理程序
支持IE事件处理程序的浏览器:IE和OPERA
跨浏览器的事件处理程序
var eventUtil={ //添加句柄 addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent('on'+type,handler); }else{ element['on'+type]=handler;//DOM0级事件处理程序判断 } }, //删除句柄 removeHandler:function(element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if(element.detachEvent){ element.detachEvent('on'+type,handler); }else{ element['on'+type]=null;//DOM0级事件处理程序判断 } } } eventUtil.addHandler(btn3,'click',showMes); eventUtil.removeHandler(btn3,'click',showMes);