`
JavaSam
  • 浏览: 955003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

firefox不传递event对象如何在函数体中获取

 
阅读更多
本文讨论如何让firefox像IE浏览器那样,不需要传递event对象到函数中,而是在函数体中直接使用window.event获取到事件对象。

  javascript里有两种获取事件对象的办法。一种是访问window.event属性,另一种便是事件函数的第一个参数。

  IE里只支持window.event,Firefox只支持参数的形式,而其他主流浏览器两者都支持。所以平时为了兼容FF,一般都写成:
-收缩JavaScript代码
function handle(e)
{
    e = e || event;
    //...
}

  虽然这样大多数情况下能运行,但是对于内嵌的调用就有问题了。比如<img onclick="handle()" />,虽然我们可以把arguments[0]当做参数传递过去,但很多情况下这里都是this,因为handle可能绑定了多个元素。虽然也有解 决的办法,但终究麻烦了,不如给Firefox做一个一劳永逸的办法:给他的window添加一个event的属性(Getter):
-收缩JavaScript代码
if(/*is ff的判断条件*/)
{
       var $E = function(){var c=$E.caller; while(c.caller)c=c.caller; return c.arguments[0]};
       __defineGetter__("event", $E);
}

  每当Firefox访问到event属性,就会顺着调用栈访问到最顶层的函数,即捕捉事件的那个函数,该函数的第一个参数即是事件对象。这样,所有的浏览器都可以用event属性,无需e=e||event那样的代码了。

来源:http://www.cnblogs.com/index-html/archive/2011/03/03/firfox_event_obj.html

 

分享到:
评论

相关推荐

    让Firefox支持event对象实现代码

    然而,Firefox并不支持`window.event`,而是将事件对象作为事件处理函数的第一个参数传递。 为了在Firefox中获取事件对象,开发者通常需要像这样编写事件处理函数: ```javascript btn.onclick = handle_btn_click...

    兼容IE和Firefox获得keyBoardEvent对象

    window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用。Firefox必须从源处加入event作参数传递。IE忽略该参数,用window.event来读取该event。解决方法是if(typeof...

    JavaScript在IE和Firefox(火狐)的不兼容问题解决

    在IE中,可以通过`window.event`来访问事件对象,而在Firefox等现代浏览器中,则需要通过参数传递或者`event`全局变量来获取事件对象。为了编写兼容的事件处理代码,应当检查是否存在事件对象参数,如果不存在,则...

    火狐浏览器不支持window.event的解决办法

    火狐浏览器不支持window.event的解决办法,解决不同浏览器针对window.event的差异

    event兼容调用(IE,Firefox,Chrome)

    在Firefox中,事件对象是作为事件处理函数的第一个参数传递进来的。因此,如果尝试在Firefox中访问`window.event`,将会得到`undefined`的结果。 为了在Firefox中也能通过`window.event`来访问事件对象,可以采用...

    火狐下event的使用

    在Firefox和IE中,获取父元素的方法也有所不同: - **Firefox**: 使用`element.parentNode`。 - **IE**: 使用`element.parentElement`。 为了兼容这两种情况,可以使用以下代码: ```javascript var ...

    Firefox不支持click方法的解决

    Firefox 不支持 click 方法的解决 Firefox 不支持 click 方法是因为 W3C 标准规定 click 方法只能赋予 input 元素。这意味着在 Firefox 浏览器中,不能使用 click 方法来触发非 input 元素的点击事件。 解决方法是...

    deepin linux如何安装最新版firefox火狐浏览器.docx

    Deepin Linux 安装最新版 Firefox火狐浏览器详解 在 Deepin Linux 操作系统中,安装最新版的 Firefox 火狐浏览器可以通过下载最新版的 Firefox 压缩包并解压缩来实现。下面是详细的安装步骤: 首先,用户需要在 ...

    同时兼容IE和FireFox的事件处理event代码--添加文件上传例子

    然而,在IE的老版本中,`event`对象是全局的,可以直接在事件处理函数中使用,无需作为参数传递。 在文件上传的例子中,我们通常会用到`&lt;input type="file"&gt;`元素,允许用户选择本地文件进行上传。在处理文件选择...

    js在IE和Firefox不同之处

    - **Firefox**:在Firefox中,`window.event`不可用。取而代之的是,可以通过以下两种方式获取`event`对象: - 在HTML页面中直接传递`event`参数给事件处理函数。 - 使用`arguments.callee.caller.arguments[0]`来...

    关于火狐(firefox)及ie下event获取的两种方法

    本文主要讨论在Firefox(火狐)和IE浏览器中如何获取`event`对象及其`keyCode`属性,这对于处理键盘输入事件至关重要。 首先,让我们了解`event`对象。在JavaScript中,`event`对象是事件处理器函数的参数,它包含...

    火狐兼容获取鼠标的坐标

    标题“火狐兼容获取鼠标的坐标”涉及到的是在网页开发中如何在Firefox浏览器上获取鼠标指针的位置。在Web开发中,特别是在JavaScript编程中,获取鼠标坐标是一项常见的需求,用于实现各种交互效果,如拖放功能、点击...

    event对象获取方法总结在google浏览器下测试

    但在Firefox中,必须在事件处理函数中显式传递`event`参数,才能访问Event对象。 2. **方法二:利用`arguments`对象获取** 这种方法通过`arguments`对象来获取Event对象,`arguments`对象包含了函数调用时的所有...

    js firefox支持问题

    - **`eval()`与`getElementById()`**:在IE中,可以使用`eval()`函数来动态获取具有特定ID的元素,但这种方法在Firefox中不推荐使用,应当优先选择`getElementById()`。 #### 6. 多个相同ID的元素 - **IE与Firefox...

    Javascript在IE和FireFox中的兼容处理

    - IE使用全局的`event`对象,Firefox则将`event`作为事件处理函数的参数传递。可以使用`arguments[0]`作为兼容方式。 6. **event对象的坐标问题** - IE使用`event.clientX`和`event.clientY`,Firefox使用`event....

    firefox兼容性问题

    然而,Firefox在早期版本中对`event`的全局作用域支持并不完全,不像其他一些浏览器(如Chrome、Safari和IE),它们允许在没有明确参数的情况下直接在事件处理函数内部使用`event`。这可能导致在Firefox中编写的一些...

    兼容IE和FireFox的event(事件)的对象获得

    兼容IE和FireFox的event(事件)的对象获得,直接下载引用即可

    Javascript的IE和Firefox兼容性参考

    解决办法是在事件处理函数中传递事件对象,如`onclick="gotoSubmit(event)"`,然后在函数内部使用`evt = evt || (window.event ? window.event : null);`来兼容IE和Firefox。 4. **HTML对象的id作为对象名的问题** ...

    IE 与FireFox 区别概要总结

    可以创建一个函数如`getEvent`来获取事件对象,并在处理函数中传递事件。 5. 获取HTML元素: - IE支持`document.all.month.value`,但Firefox要求使用`document.getElementsByName("month")[0].value`或`document....

Global site tag (gtag.js) - Google Analytics