Firefox 中的“事件”等价物

IT技术 javascript jquery firefox fullcalendar dom-events
2021-03-17 08:21:17

我正在使用以下代码,它在 Chrome 中运行良好。

function dayBind(xyzValue) {
    if(event.type == 'click')
       alert('Mouse Clicked')
}

请注意,没有传递给函数的“事件”变量,但在 chrome 的情况下它仍然可供我使用。但是当我使用 Firefox 时,我得到了未定义的“事件”。我尝试使用以下解决方法:

var e=arguments[0] || event;

还:

var e=window.event || event;

但他们都没有为我工作。Firefox 中是否有任何“事件”等价物?

4个回答

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

function dayBind(event, xyzValue) {
    var e=event || window.event;
    if(event.type == 'click')
       alert('Mouse Clicked')
}
我正在处理一个非常庞大而复杂的代码。我不能使用 .bind() 我只需要以某种方式在这个函数中获取事件对象。我想知道为什么在 Firefox 中如此困难:(
2021-04-22 08:21:17
似乎event.type代码的第三行应该是e.type
2021-04-25 08:21:17
在进入例程时使用“this”并从中派生事件。
2021-05-05 08:21:17
@AdilMalik 如果您使用 jQuery,为什么不使用.bind()它会为您节省大量时间。jQuery 将处理跨浏览器的事件绑定。
2021-05-11 08:21:17
'dayBind' 的函数调用是什么样的?我想从 javascript 调用这个函数,在那里我没有“事件”变量,但我只有 xyzValue 传递给 dayBind 方法。
2021-05-12 08:21:17

如果您使用“onclick”属性或其他属性设置处理程序(因为您标记了问题“jQuery”,您确实应该考虑不这样做),您必须明确传递它:

<button type=button onclick='whatever(event)'>Click Me</button>
我正在使用插件的回调函数。我自己不能称之为。对您的建议提出一个简单的问题:当您编写: onclick="whatever(event)" 时,您是在 onclick 属性的值中编写 javascript,对吗?为什么不能在其他函数中进行相同的函数调用,例如:function foo(){whatever(event); // 这也是 javascript } // 但这在 FireFox 10.0.2 中对我不起作用
2021-05-03 08:21:17
“onclick”属性中的代码应该被视为浏览器为您创建的函数的一部分。该函数自动具有可用的“事件”参数。像我在答案中所做的那样编写属性会导致该参数传递给您的另一个函数。真的,您应该阅读 jQuery API 并使用它来绑定事件处理程序,而不是使用“onclick”和其他类似的属性。
2021-05-09 08:21:17

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

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

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

参考

我正在使用插件的回调函数。我自己不能称之为。

对您的建议提出一个简单的问题:当您编写时:onclick="whatever(event)"您是在onclick属性值中编写 javascript ,对吗?

为什么不能在其他函数中进行相同的函数调用,如下所示:

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

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

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

真的,您应该阅读 jQuery API 并使用它来绑定事件处理程序,而不是使用“onclick”和其他类似的属性。