javascript事件处理
2016-07-27 13:40
393 查看
事件流两种传递方式:分别为事件冒泡与事件捕获。
对于事件冒泡,事件触发后,从触发它的容器一层层上传到父容器。所以会出现多容器对同一事件处理的现象,这可能不是我们希望看到的。事件捕获则相反,是从最不具体的容器传递到触发事件的容器。
添加事件处理程序
一:html事件处理
内嵌到html代码中,联系紧密,变动时,可能需要改动两处代码。如事件处理程序名称改变。
<button type="button" onclick="delet()">删除</button>
<span>hello</span>
<script type="text/javascript">
function delet()
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
}
</script>
二:DOM0级事件处理
<button type="button" id="delet">删除</button>
<span>hello</span>
<script type="text/javascript">
document.getElementById("delet").onclick=function
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
}
</script>
三:DOM2级事件处理
定义了两个方法:addEventLister(),removeEventLister()
分别有三个参数:事件名,处理程序,布尔值(true表示捕获阶段调用处理程序,flase则表示冒泡阶段调用程序)
IE浏览器不支持。
<button type="button" id="delet">删除</button>
<span>hello</span>
<script type="text/javascript">
document.getElementById("delet").addEventListener("click",function()
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
},false);
</script>
四:IE事件处理程序
也定义了两个方法:attachEvent(),detachEvent()
两个参数,没有最后的布尔值
<button type="button" id="delet">删除</button>
<span>hello</span>
<script type="text/javascript">
document.getElementById("delet").attachEvent("onclick",function()
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
});
</script>
所以涉及跨浏览器处理
var evenUtil=
{
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;
}
}
element.type===element[type]
对于事件冒泡,事件触发后,从触发它的容器一层层上传到父容器。所以会出现多容器对同一事件处理的现象,这可能不是我们希望看到的。事件捕获则相反,是从最不具体的容器传递到触发事件的容器。
添加事件处理程序
一:html事件处理
内嵌到html代码中,联系紧密,变动时,可能需要改动两处代码。如事件处理程序名称改变。
<button type="button" onclick="delet()">删除</button>
<span>hello</span>
<script type="text/javascript">
function delet()
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
}
</script>
二:DOM0级事件处理
<button type="button" id="delet">删除</button>
<span>hello</span>
<script type="text/javascript">
document.getElementById("delet").onclick=function
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
}
</script>
三:DOM2级事件处理
定义了两个方法:addEventLister(),removeEventLister()
分别有三个参数:事件名,处理程序,布尔值(true表示捕获阶段调用处理程序,flase则表示冒泡阶段调用程序)
IE浏览器不支持。
<button type="button" id="delet">删除</button>
<span>hello</span>
<script type="text/javascript">
document.getElementById("delet").addEventListener("click",function()
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
},false);
</script>
四:IE事件处理程序
也定义了两个方法:attachEvent(),detachEvent()
两个参数,没有最后的布尔值
<button type="button" id="delet">删除</button>
<span>hello</span>
<script type="text/javascript">
document.getElementById("delet").attachEvent("onclick",function()
{
var span=document.getElementsByTagName("span");
span[0].parentNode.removeChild(span[0]);
});
</script>
所以涉及跨浏览器处理
var evenUtil=
{
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;
}
}
element.type===element[type]
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 设计模式---状态模式在web前端中的应用
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子