美文网首页
处理事件对象的兼容性

处理事件对象的兼容性

作者: Pretty_Boy | 来源:发表于2017-09-17 18:51 被阅读22次

1.window.event

(function(){
 var evt = evt ? evt : (window.event ? window.event : null);
 console.log(evt);
})()

首先判断时候有参数event对象传入,其次判断是否是IE的事件对象window.event

2.键盘值的取得
IE下 event.keyCode
Firefox下event.which

function myKeyPress (evt) {
 var evt = evt ? evt : (window.event ? window.event : null); //获取事件对象
 var key = evt.keyCode ? evt.keyCode : evt.which;
}

3.事件源的获取
IE下 event对象有srcElement属性,没有target属性
Firefox下 event对象有target属性,没有srcElement属性

var ele = function (evt) {
 evt = evt || window.event;
 return event.srcElement ? event.srcElement : event.target;
}

4.事件监听

5.鼠标位置
IE下event.x/y
其他下event.pageX


10.7日更新问题:
使用事件委托为li标签添加移入变色,并且在输入框输入对应数字后点击禁止变色按钮,该li取消事件。
效果如下:

变色.gif

HTML:

  <ul id="test">
    <li>1</li>
    <li>
      <div>
        d
      </div>
    </li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
  <input type="text" id="num">
  <input type="button" id="btn1" value="新增">
  <input type="button" id="btn2" value="禁止变色">

JS:

var oUl = document.getElementById("test");
var btn1 = document.getElementById("btn1");
var btn2 = document.getElementById("btn2");
var a;
var element;
//console.log(oUl.tagName);
oUl.addEventListener("mouseover",function(e){
  e = e || window.event;
  //console.log(e);
  var target = e.target || e.srcElement;
  //console.log(e.nodeName);
  while(target.nodeName !== "UL"){
    if(target.nodeName == "LI" && target !== element){
      target.style.color = "red";
      break;
    }
    target = target.parentNode;
  }
})
oUl.addEventListener("mouseout",function(e){
  e = e || window.event;
  //console.log(e);
  target = e.target || e.srcElement;
  //console.log(e);
  while(target.nodeName !== "UL"){
    if(target.nodeName == "LI" && target !== element){
      target.style.color = "black";
      break;
    }
    target = target.parentNode;
  }
})
btn1.onclick = function(){
  //console.log(this.nodeName);
  var oLi = document.createElement("li");
  oLi.innerHTML = "新增";
  oUl.appendChild(oLi);
}
btn2.onclick = function(){
  var li = document.querySelectorAll("li");
  a = +document.getElementById("num").value;
  a--;
  element = li[a];
  // console.log(element);
}

其中重点是:while循环中的语句:
如果源是li标签,并且源不属于输入框中所输入的索引,则执行。

相关文章

  • JS的原生事件

    javascript原生的事件包括事件流、处理函数、事件对象等。而在兼容性也有问题。 1事件流 事件流是ie和Ne...

  • 事件对象及兼容性处理

    1. 浏览器自带的行为,即使没有给元素绑定事件,事件也是存在的。比如: onclick、onmouseover(o...

  • 处理事件对象的兼容性

    1.window.event 首先判断时候有参数event对象传入,其次判断是否是IE的事件对象window.ev...

  • 常用事件

    事件 事件的三大要素 事件源 事件类型 事件函数 事件对象 : 事件函数里提供的形参 事件对象兼容性 vareve...

  • 十七、DOM之事件对象 ------ 2020-01-05

    1、通过例子理解事件对象: 2、事件对象中常用的属性: 3、事件对象e中的键盘码的兼容性: 4、事件对象的兼容问题...

  • js事件

    1.事件 (1)事件对象的兼容性写法 event对象常用属性 三个事件的重要坐标: clientX clien...

  • js网页特效(四)事件

    1.事件 (1)事件对象的兼容性写法 event对象常用属性 三个事件的重要坐标: clientX clien...

  • DOM事件对象与IE事件对象

    DOM 事件处理对象 IE事件对象 注意: DOM中事件处理对象中的 event.currentTarget 与 ...

  • 事件学习笔记

    iOS中,不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.处理事件的对象叫@“...

  • JavaScript事件详解

    事件处理 事件对象

网友评论

      本文标题:处理事件对象的兼容性

      本文链接:https://www.haomeiwen.com/subject/tirmsxtx.html