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();
}
}