我在做
Jskit.org(一套自己的javascript工具包)的时候,绑定事件,或者触发事件绑定的方法,都是在方法内使用event的,但是用到firefox的时候发现firefox没有这个全局的event,只有在事件发生之后才会出现event对象。我使用了如下的方式来解决:
//首先,定义一个全局的event
if( typeof(window.event)=="undefined" ){
eval("var event = new Object;");
}
// Firefox Event << IE Event
// bind ie's methods on firefox
function jskitFFEvent(e){
if( typeof(document.all)=="undefined" ){
event = e;
event.srcElement = e.target;
}
return true;
};
//然后在绑定事件的地方:
if ( typeof(document.all)=="undefined" ) {//for Firefox
var _eventName = rName.replace(/on(.*)/i,'$1');
eval("_bk = rObj.addEventListener(\""+_eventName+"\", function(){jskitFFEvent(event);"+rHandler+"();}, true);");
} else{//for IE
eval("_bk = rObj.attachEvent(\""+rName+"\","+ rHandler+");");
}
//这里rHandler是传递过来的方法名
//调用的方式形如:
jskitEvents.add(myElement,"onclick","myClass.onclick");
//该方式还可以给绑定事件传递参数,只不过暂时我还没有用到,所以没写那么多。
使用了这样的方式之后,以前在函数内用的event.srcElement都不想要在改动了。我想类似的方式也能解决其他firefox与ie兼容的问题吧,把对象重构,把不兼容的地方抽出来之前解决,做一个对应的转换,以后的代码都不需要再做修改或者不用每次都要做两态判断的处理(后一种情况让我非常头疼)。
我现在做的工作是不要在页面中(主要是标签中)写任何js代码,所有的js脚本都通过配置和部署来应用,让js自己来判断该去绑定谁,该去执行什么,页面只负责src的引用。
JavaEye我是刚刚才知道的,看文章的时候看着看着就蹦出来一个不知道的新名词。唉,为什么老是出来新东西来残害老年人的智商。
分享到:
相关推荐
火狐浏览器不支持window.event的解决办法,解决不同浏览器针对window.event的差异
本文将详细介绍如何在Firefox(火狐)浏览器中将用户按下回车键的行为转换为按下Tab键的效果。此方案主要适用于那些希望增强用户体验、提供更加流畅表单填写流程的应用程序。 #### 背景介绍 在不同的浏览器环境下,...
如果不支持,那么我们假设是在IE浏览器中,直接设置`window.event.returnValue`为`false`来阻止默认行为。 需要注意的是,`window.event`在IE中是全局对象,可以直接访问到当前的事件。而在其他非IE浏览器中,事件...
然而,在早期的非IE浏览器中,如Firefox、Chrome、Safari和Opera,并不直接支持`window.event`,它们通常会将事件对象作为事件处理函数的第一个参数传递,如`function(event)`中的`event`。 标题和描述中提到的情况...
Javascript 代码 代码如下: function keyNumAll(evt){ //兼容IE和Firefox获得keyBoardEvent对象 evt = (evt) ? evt : ((window.event) ? window.event : “”); var key = evt.keyCode?evt.keyCode:evt.which;//...
在IE浏览器中,我们可以通过window.event.srcElement属性来访问事件源,但在Firefox等其他浏览器中,这一属性是不存在的,因此需要寻找兼容性写法。这篇文档便是对window.event.srcElement属性及其兼容性写法的详细...
然而,Firefox并不支持`window.event`,而是将事件对象作为事件处理函数的第一个参数传递。 为了在Firefox中获取事件对象,开发者通常需要像这样编写事件处理函数: ```javascript btn.onclick = handle_btn_click...
在IE中,window.event可以正确执行,但是在Firefox中却不可以。解决方法是将window.event改为事件对象evt,例如: 原代码:提交" onclick="javascript:gotoSubmit()"/> function gotoSubmit() { ... alert...
Firefox则不支持直接通过`window.event`来访问事件对象。在Firefox中,事件对象是作为事件处理函数的第一个参数传递进来的。因此,如果尝试在Firefox中访问`window.event`,将会得到`undefined`的结果。 为了在Fire...
- **Firefox环境下**,不支持 `window.event`,必须在事件处理函数中传递事件对象。 **解决方法:** 使用以下代码实现跨浏览器兼容: ```javascript function gotoSubmit8_2(evt) { evt = evt ? evt : (window....
)来代替IE下的event.srcElement或者Firefox下的event.target。请同时注意event的兼容性问题。 11. window.location.href问题 IE或者Firefox2.0.x可以使用window.location或window.location.href;Firefox1.5.x只能...
然而,Firefox在早期版本中对`event`的全局作用域支持并不完全,不像其他一些浏览器(如Chrome、Safari和IE),它们允许在没有明确参数的情况下直接在事件处理函数内部使用`event`。这可能导致在Firefox中编写的一些...
- Firefox和其他浏览器中没有 `event.x` 和 `event.y`,而提供了 `event.pageX` 和 `event.pageY`。 - 为了解决这一差异,可以采用以下方式获取坐标值: ```javascript var mX = event.pageX || event.clientX +...
标题与描述均聚焦于“JavaScript在IE和Firefox(火狐)的不兼容问题解决”,这表明文章旨在探讨并提供解决方案来处理在不同浏览器环境下的JavaScript兼容性问题,尤其是在Internet Explorer(IE)和Mozilla Firefox...
- IE支持全局变量`window.event`来访问当前事件的信息,但在Firefox中,事件对象只能在事件处理函数内部访问。为了解决这个问题,可以在事件处理函数中传递`event`参数,例如: ```html 提交" onclick=...
在非IE浏览器中,如Firefox、Chrome、Safari等,你应该使用`event.target`来获取触发事件的元素,因为`window.event`在这些浏览器中并不可用。为了确保代码的跨浏览器兼容性,可以这样写: ```javascript function ...
本文将深入探讨这些差异,帮助开发者更好地理解和解决在Firefox和IE中常见的JavaScript支持问题。 #### 1. 表单元素访问方法 在JavaScript中访问表单元素有多种方法,但在不同的浏览器中,这些方法的表现并不一致...