event、Dom

event、Dom

事件处理方法:事件流

事件流分为两种:事件冒泡(从里到外);事件捕获(从外到里)。

IE:只存在事件冒泡

DOM浏览器(现代浏览器,包括chrome、firefix等):存在两种事件流,默认事件冒泡。

DOM 0最早版本,也是DOM规范,兼容所有浏览器;缺点:不能同时添加多个事件,如果写在行内,会污染全局。

DOM 2优点:可以累加事件;缺点:要做兼容处理。

DOM 2累加且做兼容示例:

if(document.addEventListener){
p1.addEventListener("click",function(e){//DOM浏览器 
alert("hello");
},true);//true可选值,代表是冒泡事件
p1.addEventListener("click",function(e){
alert("hi");
}.true);
}else{
p1.attachEvent("onclick",function(e){//IE浏览器
alert("hello");
});
p1.attachEvent("onclick",function(e){
alert("hi");
});
 }

event 事件对象

获取事件信息。

clientX 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标。//对于浏览器页面

clientY 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(客户区)的垂直坐标。

screenX 事件属性可返回事件发生时鼠标指针相对于屏幕的水平坐标。//相对于屏幕

screenY 事件属性可返回事件发生时鼠标指针相对于屏幕的垂直坐标。

阻止DOM2事件冒泡:// DOM浏览器

e.stopPropagation();

阻止IE事件冒泡:

e.cancelBubble=true;

阻止默认事件://DOM浏览器

e.preventDefault();

阻止IE默认事件(同样阻止任何事件的发生):

e.returnValue=false;

节点

获取节点:

var attrs=d1.attributes;

访问节点:

attrs['id']//访问元素节点id属性或访问id属性节点
d1.id;
d1.gerAttrbute('id');

IE在table的td/tr,以及select的option不支持innerHTML

var sheets=document.styleSheets(获取内外所有样式表)

IEDOM sheets[0].rule[0].style.height;//调用内部样式表的第一个的height

DOM sheets[0].cssRule[0].style.height;

最终样式表(只能获取,不能设置)

IE:d2.currentStyle.height;

DOM:window.get computedStyle(d2,null).height;

原文地址:https://www.cnblogs.com/rwalker/p/5543566.html