解决firefox不支持window.event.returnValue = false

1.       火狐中所有使用event相关的代码无法使用.

event是IE封装过的全局对象,控制所有事的事件,但是这个对象在火狐中不存在,所以在火狐中无法使用,特别是event.keyCode也是无法取得的。

解决方法:

下面这段JS重新封装了EVENT对象,直接在页面引用,原先的events代码均可试用于火狐:

<script>

/*firefox----这段js重新封装了event对象,经验证可以在火狐下支持!----*/

    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>


2.       event.returnValue = false无法使用

虽然重新封装了event但是这个方法还是无法支持

解决方法:

调用event.returnValue = false时候使用以下方法:

function setReturnValueFalse()

{  

    if(document.all)

    {

        window.event.returnValue = false;

    }

    else

    {

        event.preventDefault();

    }

}



展开阅读全文

没有更多推荐了,返回首页