兼容IE和Firefox的event对象

原创 2011年01月19日 19:36:00

IE 中可以直接使用 event 对象,而 FF 中则不可以,一般 可以通过以下两种方法满足event 对象需要:

第一种方法:
var theEvent = window.event || arguments.callee.caller.arguments[0];

第二种是将 event 作为参数来传递:
function xxx(e){var theEvent = window.event || e;}

以上两种方法只能用于事发现场,而像这种情况,则不能满足需要,因为它没有事发现场的event,例如:

function click() {
if (event.button==2) { 
alert('你想看什麽?') 
}  
if (event.button==1)  

alert('你想看作践?'); 

document.onmousedown=click

 

所以最好的方法就是重构firefox 中的event 对象,如下

<script>
/*firefox*/
function __firefox(){
    HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style);
    window.constructor.prototype.__defineGetter__("event", __window_event);
    Event.prototype.__defineGetter__("srcElement", __event_srcElement);
}
function __element_style(){
    return this.style;
}
function __window_event(){
    return __window_event_constructor();
}
function __event_srcElement(){
    return this.target;
}
function __window_event_constructor(){
    if(document.all){
        return window.event;
    }
    var _caller = __window_event_constructor.caller;
    while(_caller!=null){
        var _argument = _caller.arguments[0];
        if(_argument){
            var _temp = _argument.constructor;
            if(_temp.toString().indexOf("Event")!=-1){
                return _argument;
            }
        }
        _caller = _caller.caller;
    }
    return null;
}
if(window.addEventListener){
    __firefox();
}
/*end firefox*/
</script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IE和firefox浏览器的event事件兼容性汇总

1,关于event的用法  存在问题:IE中可以直接使用event对象,但是Mozilla不可以直接使用。  例如: function doIt(){ alert(event...

创建兼容 IE/FireFox 的 event 及 event 的 srcElement、fromElement、toElement 属性

自然,我们都习惯了 IE,在 IE 中要在函数中获得各事件对象很容易,直接用 event、event.srcElemtn、event.fromElement、event.toElement 就行了。在...

[zz]IE和Firefox下event乱谈

如果在使用javascript的时候涉及到event处理,就需要知道event在不同的浏览器中的差异,因为javascript的事件模型有三种,它们分别是NN4、IE4+和W3C/Safari;这也造...

兼容firefox的问题 event is not defined

FF下不能通过window.event来获取event的对象,处理这个问题真是一个麻烦。今天找到一种比较妥善的方法,记录如下: 1、对于单函数 tc.tbl.onmouseover=functio...
  • e_wsq
  • e_wsq
  • 2011-10-25 15:11
  • 553

【转】兼容firefox的问题 event is not defined

FF下不能通过window.event来获取event的对象,处理这个问题真是一个麻烦。今天找到一种比较妥善的方法,记录如下: 1、对于单函数 tc.tbl.onmouseover=functio...

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

1.兼容firefox的 outerHTML,FF中没有outerHtml的方法。  代码如下: if (window.HTMLElement) { HTMLElement.prototy...
  • uniqer
  • uniqer
  • 2012-07-26 14:40
  • 1660

js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)

这篇文章主要介绍了js实现ctrl+v粘贴上传图片,兼容chrome,firefox,ie11

Javascript的IE和Firefox兼容性

1. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在Firefox(火狐...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)