«событие» эквивалент в Firefox - PullRequest
6 голосов
/ 09 марта 2012

Я использую следующий код, и он отлично работает в 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 ]

10 голосов
/ 09 марта 2012

Поскольку IE и Chrome помещают событие в глобальный объект window, вы можете его получить.В Firefox вы должны позволить первому параметру быть событием.

function dayBind(event, xyzValue) {
    var e=event || window.event;
    if(event.type == 'click')
       alert('Mouse Clicked')
}
9 голосов
/ 09 марта 2012

Если вы устанавливаете обработчик с атрибутом «onclick» или чем-то (что, поскольку вы пометили вопрос «jQuery», вам действительно следует подумать, что вы этого не делаете), вы должны явно передать его:

<button type=button onclick='whatever(event)'>Click Me</button>
0 голосов
/ 07 сентября 2018

Я работаю в функции обратного вызова плагина.Я не могу назвать это сам.

Один простой вопрос к вашему предложению: когда вы пишете: onclick="whatever(event)" вы пишете javascript со значением атрибута onclick, верно?

Почему вы не можете сделать такой же вызов функции внутри какой-то другой функции, подобной этой:

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

// Но в FireFox это не работает10.0.2

Код в атрибуте «onclick» следует рассматривать как часть функции, которую браузер создает для вас.Эта функция автоматически имеет параметр «событие».Запись атрибута, как я сделал в ответе, приводит к тому, что этот параметр передается другой вашей функции.

Действительно, вы должны прочитать об API jQuery и использовать его для привязки обработчиков событий вместо использования «onclick» и других подобных атрибутов.

0 голосов
/ 01 марта 2013

Если вам это нужно для работы в разных браузерах, просто используйте объект arguments:

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

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

Ссылки

...