在firefox中'event'相当于'

时间:2012-03-09 15:15:18

标签: javascript jquery firefox javascript-events fullcalendar

我正在使用以下代码,它在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中是否存在“事件”等同物?

4 个答案:

答案 0 :(得分:10)

因为IE和Chrome将事件放在全局对象window中,所以你可以得到它。在firefox中,你需要让第一个参数成为事件。

function dayBind(event, xyzValue) {
    var e=event || window.event;
    if(event.type == 'click')
       alert('Mouse Clicked')
}

答案 1 :(得分:9)

如果您使用“onclick”属性设置处理程序(由于您标记了问题“jQuery”,您真的应该考虑不这样做),您必须明确地传递它:

<button type=button onclick='whatever(event)'>Click Me</button>

答案 2 :(得分:0)

如果您需要跨浏览器工作,只需使用arguments对象:

function dayBind() 
  {
  var e=arguments[0];

  if(!!e && e.type === 'click')
    {
    alert('Mouse Clicked') 
    }
  }

<强>参考

答案 3 :(得分:0)

我正在使用插件的回调函数。我自己不能这样称呼。

一个简单的问题建议:在编写onclick="whatever(event)"时,您正在使用onclick属性值编写JavaScript,对吗?

为什么不能在其他这样的函数中进行相同的函数调用:

function foo(){ whatever(event); // this is also javascript }

//但这在FireFox 10.0.2中对我不起作用

“ onclick”属性中的代码应被视为浏览器为您创建的功能的一部分。该功能自动具有“事件”参数可用。像我在答案中那样写属性会导致该参数在您的其他函数上传递。

确实,您应该阅读有关jQuery API的信息,并使用它来绑定事件处理程序,而不要使用“ onclick”和其他类似的属性。