美文网首页
event获取兼容写法及阻止冒泡和默认事件

event获取兼容写法及阻止冒泡和默认事件

作者: JuanitaLee | 来源:发表于2018-08-02 14:09 被阅读73次

在我们写js的时候经常要用到event对象,你可能用它来阻止事件冒泡,或者阻止浏览器的默认行为,也可能得到鼠标的点击位置,鼠标的按键信息,还有可能得到键盘的按键信息,功能键的状态等。

首先我们来看下如何获取event对象呢?

第一种方法
<div class='cont' onclick='getEvent()'>
function getEvent(){
    var evt=window.event||arguments.callee.caller.arguments[0];
}

如果我们的事件中不给传递event对象的情况下,在IE中,event对象是作为window的属性的全局变量,我们可以很轻松的得到。但是在火狐浏览器下,event对象是一种现场对象,只有在事件触发的时候才会生成,她会作为火狐浏览器的响应事件的第一个参数传入。

解释一下arguments.callee.caller.arguments[0]:

当执行onclick=”getEvent()”时arguments.callee就是getEvent(),arguments.callee.caller就是function onclick,onclick的第一个能数就是event,也就是arguments.callee.caller.arguments[0]。这个在火狐下得到event对象的方法有一个限制,那就是函数不能在层次调用后再通过此方法得到event对象。

<div class='cont' onclick='getEvent()'>
function getEvent(){
       initEvent();
    }
function initEvent(){
var evt=window.event||arguments.callee.caller.arguments[0];//火狐下将得不到event对象。
}

像上面这种写法就是层次调用了,这个时候在内层方法中火狐用此方法是得不到event对象的。

第二种方法
function a(e){
e=e||window.event;
alert(e.keyCode);
} 

ie浏览器如下调用 :<body onclick="a()">
firefox火狐浏览器如下调用 <body onclick="a(event)">

阻止冒泡事件兼容写法

function stopBubble() {
    var e = window.event||arguments.callee.caller.arguments[0];
    if(e && e.stopPropagation){//其他浏览器
        e.stopPropagation();
    }else{ //IE浏览器
        e.cancelBubble = true;
    }
}

阻止默认事件兼容写法

很多的网页元素都会有默认的行为,比如说当你点击一下超链接a标签的时候,它会有一个跳转的行为;当你在网页上点鼠标右键时会出现一个右键菜;当你在一个form表单里点击提交按钮时网页会产生提交行为并刷新网页,当你网页上滚动鼠标滚轮时,网页的滚动条会动等等。这些都叫事件的默认行为,我们如果不需要,可以将这些事件阻止掉。

function stopEvent() {
    var e = window.event||arguments.callee.caller.arguments[0];
    if(e && e.stopPropagation){//其他浏览器
       e.preventDefault();
    }else{ //IE浏览器
        e.returnValue=false;
    }
}

相关文章

  • event获取兼容写法及阻止冒泡和默认事件

    在我们写js的时候经常要用到event对象,你可能用它来阻止事件冒泡,或者阻止浏览器的默认行为,也可能得到鼠标的点...

  • 兼容

    事件绑定 移除事件 阻止事件冒泡 取消事件的默认行为 获取事件target 获取event对象 获取clientW...

  • vue-修饰符

    事件修饰符 原生阻止默认事件和阻止冒泡时间:event.preventDefault() 或 event.s...

  • 阻止事件冒泡

    1、阻止事件冒泡 - jQuery的两种方式 2、取消默认行为 3、兼容写法

  • 你应该知道的兼容写法

    1.滚动条 2.获取样式兼容 3.事件对象兼容 4.阻止事件冒泡兼容 5.阻止默认行为兼容 6.事件监听兼容

  • vue事件修饰符

    .stop阻止事件冒泡。类似js中的event.stopPropagation() .prevent阻止默认事件。...

  • event.stopPropagation()与event.pr

    今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 阻止事件冒泡,...

  • js的部分兼容

    1.获取鼠标键值 2.获取页面滚动高度 3.事件兼容 4.阻止冒泡 5阻止默认事件 6事件监听的添加移除 7.事件...

  • event

    1. 事件对象的获取 var event = event || window.event; // 兼容写法, i...

  • js阻止默认事件和冒泡的兼容写法

    随着h5的流行,已经慢慢忽略兼容性的写法了,有时候做兼容的时候需要用到,记录一下。 阻止事件冒泡的兼容性写法 阻止...

网友评论

      本文标题:event获取兼容写法及阻止冒泡和默认事件

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