场景描述:

  在用户行为采集的过程中,需要侦听window下的event对象,根据事件类型做相应的过滤处理,但在firefox下window.event是未定义的;

问题分析:

  要想获取event属性共有两种方法:一种是访问window.event属性,另一种便是事件响应函数的第一个参数。当不支持event属性时,只有后者可以获取到event;如何在事件响应函数中的任何地方准确捕捉到event属性呢?比如事件函数内部嵌套了其他回调函数,在回调函数中使用event,直接使用arguments[0]是无效的。准确的理解事件响应函数的第一个参数是事件响应的顶级函数的第一个参数;

if (/Firefox/.test(navigator.userAgent)) {
var $E = function () {
var c = $E.caller;
while (c.caller)
c = c.caller;
return c.arguments[0]
};
__defineGetter__("event", $E);
}

问题解决:

  这样在确定事件dispatch后,使用event可以准确捕捉到事件了。

参考:http://blog.csdn.net/duxingzhe0311/article/details/9631537

让FireFox支持window.event属性的更多相关文章

  1. 让FireFox支持 window.event 全局事件对象

    这里比原文稍加改进,让FF也支持 event.srcElement了, 省得每次写兼容代码挺麻烦的: //For firefox window.event if(typeof(window.event ...

  2. Event/window.Event属性和方法

    type:事件的类型,如onlick中的click:srcElement/target:事件源,就是发生事件的元素:button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下 ...

  3. 如何解决firefox下window.event的问题

    一.在函数中传递event参数 在函数中传递event参数,这样我们就可以兼容IE和FF的event的获取了,如下面的函数: function _test(evt){    var src = evt ...

  4. firefox浏览器window.event is undefined问题

    获取鼠标坐标,IE下window.event.clientX和window.event.clientY就可以获取x,y的座标了.但是firefox却不行,浏览器报错window.event is un ...

  5. window.event.srcElement与window.event.target 触发事件的元素 触发事件对象的获取,window.event与时间函数参数的event是同一个 事件对象

    判断事件触发的元素:     var tag = window.event.target || window.event.srcElement;    if (tag.tagName.toLowerC ...

  6. window.event.srcElement与window.event.target 触发事件的元素

    IE浏览器支持window.event.srcElement , 而firefox支持window.event.target:<input type="text" onblu ...

  7. window.event

    e = e || window.event是我们在做事件处理时候区分IE和其他浏览器事件对象时常用的写法.但是这行兼容性代码有没有必要出现在所有的事件句柄中呢?标准事件调用方式需要这行代码吗?下边我们 ...

  8. window.event对象详尽解析

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...

  9. 浏览器兼容问题----Firefox不兼容event的解决方法

    一.event.srcElement:当前事件的源: 在IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcE ...

随机推荐

  1. Servlet + JSP 时代

    Spring,Django,Rails,Express这些框架技术的出现都是为了解决什么问题,现在这些框架都应用在哪些方面? - 知乎 https://www.zhihu.com/question/2 ...

  2. Android之上下文context

    Context,中文直译为“上下文”,SDK中对其说明如下: 1.它描述的是一个应用程序环境的信息,即上下文. 2.该类是一个抽象(abstract class)类,Android提供了该抽象类的具体 ...

  3. EOS主网节点部署

    EOS主网节点部署 #环境 ubuntu 16.4 EOS编译安装 EOS主网节点部署 eos区块查询.进程监控shell #EOS编译安装 #环境 ubuntu 16.4 # EOS安装部 # 以下 ...

  4. 完全用nosql轻松打造千万级数据量的微博系统(转)

    原文:http://www.cnblogs.com/imxiu/p/3505213.html 其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量 也并不是一千万条微博信 ...

  5. [C#]嵌入互操作类型

    嵌入互操作类型(Embed Interop Types) 运用office编程调用Excel 的PIA时Microsoft.Office.Interop.Excel.dll时会产生如下问题: 1.提示 ...

  6. 解决下载ftp文件过程中,浏览器直接解析文件(txt,png等)的问题

    搭建了一个ftp服务器,供用户进行上传下载,在下载过程中发现,一些文件,例如txt,jpg,png,pdf等直接被浏览器解析了.在浏览器中显示其内容,没有下载. 下面通过网上查询得到一些解决方法: 最 ...

  7. 1.2 Getting Started--Naming Conventions(命名约定)

    Ember.js使用一个运行时解析器去连接你的对象而没有很多样板文件.作为一个开发者,如果你把code放到约定好的位置这个解析器会自动工作.   一.The Application     1. 当你 ...

  8. LCS 最长公共子子串

    与 最长公共子序列类似 只是最长公共子串必须连续 所以只能走斜线!!!! ''' LCS 最长公共子序列 ''' def LCS_len(x, y): m = len(x) n = len(y) dp ...

  9. poj2954 Triangle

    地址:http://poj.org/problem?id=2954 题目: Triangle Time Limit: 1000MS   Memory Limit: 65536K Total Submi ...

  10. Java backup

    待补充 ........ 0:常用头文件(待补充) import java.util.Arrays; import java.util.HashSet; import java.util.TreeSe ...