本文讨论如何让firefox像IE浏览器那样,不需要传递event对象到函数中,而是在函数体中直接使用window.event获取到事件对象。 javascript里有两种获取事件对象的办法。一种是访问window.event属性,另一种便是事件函数的第一个参数。 IE里只支持window.event,Firefox只支持参数的形式,而其他主流浏览器两者都支持。所以平时为了兼容FF,一般都写成: -收缩JavaScript代码 function handle(e) { e = e || event; //... } 虽然这样大多数情况下能运行,但是对于内嵌的调用就有问题了。比如<img onclick="handle()" />,虽然我们可以把arguments[0]当做参数传递过去,但很多情况下这里都是this,因为handle可能绑定了多个元素。虽然也有解 决的办法,但终究麻烦了,不如给Firefox做一个一劳永逸的办法:给他的window添加一个event的属性(Getter): -收缩JavaScript代码 if(/*is ff的判断条件*/) { var $E = function(){var c=$E.caller; while(c.caller)c=c.caller; return c.arguments[0]}; __defineGetter__("event", $E); } 每当Firefox访问到event属性,就会顺着调用栈访问到最顶层的函数,即捕捉事件的那个函数,该函数的第一个参数即是事件对象。这样,所有的浏览器都可以用event属性,无需e=e||event那样的代码了。 来源:http://www.cnblogs.com/index-html/archive/2011/03/03/firfox_event_obj.html
相关推荐
阻止冒泡在IE中用`event.cancelBubble = true`,在Firefox中用`event.stopPropagation()`。 - 为了浏览器兼容性,可以检查`event`对象是否存在并使用相应的方法。 ### 17. `Window`对象 - 窗口对象是JavaScript全局...
此外,`window.event`在事件处理中是IE特有的,而Firefox中事件对象必须通过事件处理函数的参数传递。在处理事件时,为兼容IE和Firefox,可以编写如下的通用事件处理函数: ```javascript function Submitted(event...
`window.event`在IE中可用,但在Firefox中不可用,因为Firefox的`event`对象只能在事件处理函数内部使用。解决方案是在事件处理函数中传递`event`参数,并使用条件语句处理。 9. **event.x与event.y问题** IE中的...
例如,IE浏览器将事件对象作为全局变量`window.event`,而Firefox和其他基于W3C标准的浏览器则需要通过事件处理函数的参数来传递事件对象。因此,为了实现跨浏览器兼容性,开发人员通常需要编写兼容代码,例如通过...
- 获取鼠标位置,IE使用`event.clientX`和`event.clientY`,FF需要事件对象传递以获取`pageX`和`pageY`。 - 边界问题,IE和FF对边框宽度的计算方式不同,影响元素的实际尺寸。 这些面试题反映了.NET/C#开发者需要...
- **升级浏览器**:建议用户使用更现代的浏览器,如Chrome、Firefox等。 #### 3. 在浏览器端不能使用 ShowMessage() `ShowMessage()` 是UniGUI中用于弹出消息对话框的一个函数。如果在浏览器端无法使用该功能,...
在处理非数组对象如 `arguments` 或者某些可以按索引访问的对象(如 Firefox 中的 `HtmlCollection`)时,也可以利用 `slice()`。例如: ```javascript function test() { alert(Array.prototype.slice.call...
- `arguments` 是一个类似数组的对象,用于获取传递给函数的所有参数。 - `arguments.callee` 是指向当前正在执行的函数引用,但在严格模式下不可用。 **6. 解析 URL 参数** - 创建一个名为 `parseQueryString` 的...
这款插件特别适用于那些需要在Internet Explorer、Firefox和Chrome等主流浏览器上运行的项目。 **2. 兼容性** jQuery.Select插件经过优化,能够很好地兼容多个浏览器,包括老版本的Internet Explorer,这在跨...