转换学开发,代码100天——2018-05-06
今天学习JavaScript的绑定事件。因为浏览器的原因绑定事件需要考虑兼容性问题。
| attachEvent | IE浏览器 ,ie9以上事件执行顺序与绑定顺序相同;ie9以下事件执行顺序与绑定顺序相反 |
btn.attachEvent("onclick",function(){ |
| detachEvent |
btn.detachEvernt("onclick",function(){ |
|
| addEventListener | FF及chrome浏览器 |
btn.addEventListener("click",function(){ |
| removeEventListener |
btn.renoveEventListener("onclick",function(){ |
如对一个按钮添加多个事件:
<script type="text/javascript"> window.onload = function(){ var btn = document.getElementById("btn"); addMyEvent(btn,"click",function() { alert("a"); }); addMyEvent(btn,"click",function() { alert("b"); }); } function addMyEvent(obj,ev,fn){ if (obj.attachEvent) { obj.attachEvent("on"+ev,fn); } else{ obj.addEventListener(ev,fn); } } </script>
补充:将上一篇文章中的拖拽事件改成线框拖拽效果
按下鼠标,拖动物体时:

松开鼠标后:

<!DOCTYPE html>
<html>
<head>
<title>javascript 拖拽</title>
<style type="text/css">
#div1{
100px;
height: 100px;
background: red;
position: absolute;
}
.Box{
border: 1px dashed black;
position: absolute;
}
</style>
<script type="text/javascript">
window.onload = function(){
var oDiv = document.getElementById("div1");
var disX =0;
var disY =0;
oDiv.onmousedown = function(ev){
//创建虚线框
var oBox = document.createElement("div");
oBox.className = "Box";
oBox.style.width = oDiv.offsetWidth+"px";
oBox.style.height = oDiv.offsetHeight+"px";
oBox.style.left = oDiv.offsetLeft+"px";
oBox.style.top = oDiv.offsetTop+"px";
document.body.appendChild(oBox);
var oEvent = ev||event;
disX = oEvent.clientX-oDiv.offsetLeft;
disY = oEvent.clientY-oDiv.offsetTop;
if (oDiv.setCapture) {
//鼠标移动事件
oDiv.onmousemove = mouseMove;
oDiv.onmouseup = mouseUp;
oDiv.setCapture();//ie专用
return false;
}else{
//鼠标移动
document.onmousemove =mouseMove;
document.onmouseup = mouseUp;
return false;
}
//鼠标按下事件
function mouseMove(ev){
var oEvent = ev||event;
var l = oEvent.clientX-disX;
var t = oEvent.clientY-disY;
oBox.style.left = l+"px";
oBox.style.top = t+"px";
};
//鼠标抬起事件
function mouseUp()
{
this.onmousemove = null;
this.onmouseup = null;
if (this.setCapture)
{
this.releaseCapture();//ie专用
}
oDiv.style.left = oBox.offsetLeft+"px";
oDiv.style.top = oBox.offsetTop+"px";
document.body.removeChild(oBox);
};
};
}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>