firefor中的’event’等效
我使用以下代码,它在Chrome中运行得非常好。
function dayBind(xyzValue) { if(event.type == 'click') alert('Mouse Clicked') }
请注意,没有传递给函数的“event”变量,但在chrome的情况下它仍然可用。 但是当我使用firefox时,我的’事件’未定义。 我尝试使用以下变通方法:
var e=arguments[0] || event;
也:
var e=window.event || event;
但它们都不适合我。 Firefox中是否存在“事件”等价物?
因为IE和Chrome将事件放在全局对象window
,所以你可以得到它。 在firefox中,您需要让第一个参数成为事件。
function dayBind(event, xyzValue) { var e=event || window.event; if(event.type == 'click') alert('Mouse Clicked') }
如果您使用“onclick”属性设置处理程序(由于您标记了问题“jQuery”,您真的应该考虑不这样做),您必须明确地传递它:
如果您需要跨浏览器工作,只需使用arguments
对象:
function dayBind() { var e=arguments[0]; if(!!e && e.type === 'click') { alert('Mouse Clicked') } }
参考
- 事件和处理程序概述
- DOM事件处理程序
- eventTarget.addEventListener
我正在使用插件的回调函数。 我不能自己打电话。
一个简单的问题提出你的建议:当你写: onclick="whatever(event)"
你在onclick
属性的值中编写javascript,对吧?
为什么不能在其他函数中进行相同的函数调用,如下所示:
function foo(){ whatever(event); // this is also javascript }
//但是在FireFox 10.0.2中这对我不起作用
“onclick”属性中的代码应该被视为浏览器为您创建的函数的一部分。 该function自动具有“event”参数。 像我在答案中所做的那样编写属性会导致该参数在您的其他函数上传递。
实际上,您应该阅读有关jQuery API的信息,并使用它来绑定事件处理程序,而不是使用“onclick”和其他类似的属性。