Есть ли способ остановить пузырь в JavaScript без параметра «е»? - PullRequest
2 голосов
/ 19 марта 2012

Я вижу много уроков, в которых рассказывается, как предотвратить появление пузырей, это использовать параметр "e"

, например:

function(e){
    e.preventDefault()
}

, но в некоторых ситуациях firebug говорит мненеправильно с "е не определено"

так есть ли способ остановить пузырь без параметра е?

1 Ответ

3 голосов
/ 19 марта 2012

Если вы установите обработчик события, используя атрибут элемента (скажем, <button onclick="myFunc()">), список аргументов будет пустым. Вместо этого вы должны использовать <button onclick="myFunc(event)">, чтобы передать текущее событие в качестве аргумента. По умолчанию аргумент не будет передан функции обратного вызова.

event является специальной переменной в этом случае. При использовании <element onEVENT="code"> браузер создает новый скрипт и функцию с FunctionBody «кодом». Эта функция примет один аргумент event, поэтому вы можете использовать этот объект в своей собственной функции / коде (см. w3c: ehca ). Обратите внимание, что IE создает глобальный объект event для каждого инициируемого события.

Итак, передайте event в качестве дополнительной переменной и используйте e.preventDefault() и e.stopPropagation. Обратите внимание, что return false; не отменяет распространение в событии click.

Демонстрация:

Ссылки:

  • W3C: DOM Уровень 3: stopPropagation
  • W3C: DOM Уровень 3: preventDefault
  • W3C: атрибут содержимого обработчика событий HTML5 :

    Используя созданную выше среду выполнения скрипта, создайте функциональный объект (как определено в разделе 13.2 Создание функциональных объектов в ECMAScript edition 5) с помощью:

    Список параметров FormalParameterList

    Если атрибут является атрибутом onerror объекта Window

    • Пусть функция имеет три аргумента с именами event, source и fileno.

    В противном случае

    • Пусть функция имеет единственный аргумент с именем event.
...