Запретить действие по умолчанию, но не останавливать распространение события - PullRequest
1 голос
/ 23 февраля 2012

Мне нужен код для работы в IE6 +, просто хотел проверить, не пропускаю ли я поддержку браузеров.

Этот код работает, и я протестировал IE7, FF10, Google Chrome 17, но янет других браузеров для тестирования.Что я хочу знать, если кто-то еще сделал это и знает, что такое код, я пропустил поддержку любого браузера с моим кодом:

    if (!e) e = window.event;

    e.returnValue = false;

    if (e.preventDefault) e.preventDefault();

    return false;

1 Ответ

3 голосов
/ 23 февраля 2012

protectDefault () - это стандарт w3c DOM Level 2, поэтому его следует применять во всех современных браузерах.

IE6, однако, не является современным браузером и не поддерживает DOM Level 2 или preventDefault(). Альтернативный IE6 использует настройку event.returnValue в false, как и вы. Обратите внимание, что это не повлияет на всплывающее сообщение о событии (в IE6 это будет достигнуто установкой event.cancelBubble в значение true). Таким образом, ваш код должен работать в IE6, а также во всех современных браузерах, чтобы предотвратить действие по умолчанию без остановки распространения.

Но я бы реструктурировал код, чтобы не устанавливать никаких свойств для события, если вам не нужно:

if (e.preventDefault) {
    e.preventDefault();
} else {
    e.returnValue = false;
}
...