Позвольте мне начать с того, что я понимаю, что приведенный ниже код имеет серьезную проблему. В частности, параметр event
не передается в функцию. Я не понимаю, почему в приведенном ниже коде Chrome, Opera, Safari, Firefox и IE обрабатывают переменную event
по-разному.
$('#eventBtn').on('click', function() {
console.log(event);
event.preventDefault();
});
В Chrome, Opera и Safari приведенный выше код работает. IE не работает во второй строке, и Firefox немедленно сработает. Для целей тестирования я создал немного более украшенный jsFiddle. Вывод выше console.log(event)
в различных браузерах:
Chrome Version 26.0.1410.64 m
MouseEvent {dataTransfer: null, toElement: кнопка # superBtn, fromElement: null, y: 20, x: 33...}Версия Opera 12.15
MouseEventSafari Version 6.0.2 (8536.26.17)
MouseEventIE Версия 10.0.9200.16540
[объект MSEventObj]Firefox Version 20.0.1
ReferenceError: событие не определено
Я был полон этой "особенностью" Chrome, Opera и Safari, потому что он работал так, как предполагалось, не как кодированное, создающее неожиданное поведение в других браузерах. Хотя IE также имеет глобальную переменную event
, в отличие от вышеупомянутых браузеров, она не назначает эту переменную событию, которое в настоящее время запускается. Firefox не имеет глобальной переменной event
и поэтому не работает, как только ссылается event
.
Обычно я использую e
для представления переменных событий, которые, как ожидается, не совпадают во всех браузерах. Почему у Chrome, Opera и Safari есть глобальная переменная event
, которую они назначают таким образом? Это где-то документировано? Кроме того, не используйте event
для переменной, называя какие-либо рекомендации для работы с этой "функцией"?