1. Firefox中所有使用event相關的代碼無法使用.
event是IE封裝過的全域對象,控制所有事的事件,但是這個對象在Firefox中不存在,所以在Firefox中無法使用,特別是event.keyCode也是無法取得的。
解決方案:
下面這段JS重新封裝了EVENT對象,直接在頁面引用,原先的events代碼均可試用於Firefox:
<script>/*firefox----這段js重新封裝了event對象,經驗證可以在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>
2. event.returnValue = false無法使用
雖然重新封裝了event但是這個方法還是無法支援
解決方案:
調用event.returnValue = false時候使用以下方法:
function setReturnValueFalse(){ if(document.all) { window.event.returnValue = false; } else { event.preventDefault(); }}