`Вернуть false` в обработчике событий, прилагаемый addeventListener или element.on *

StackOverflow https://stackoverflow.com/questions/3462123

Вопрос

Право Давайте сначала выберем это. Да, я хочу скрыть контекстное меню. Нет, я не пытаюсь помешать кому-то подъему контента с моей страницы. Его предполагаемое использование вводится для игры в браузере, и она будет ограничена определенной областью на веб-странице.

Переход от идеологического к техническому ...

var mouse_input = function (evt) {
    // ...
    return false;
}

document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful

Может кто-то объяснить мне, почему addEventListener Версия не может остановить контекстное меню от стрельбы? Единственное отличие, в которой я смог увидеть в СафариС. Веб-инспектор было это document.onmousedown был А. isAttribute значение, которое было правдой, в то время как addEventListener Версия имела то же значение, что и ложь.

Это было полезно?

Решение

Так что мой неурожный поиск внезапно стал плодотворным.

var mouse_input = function (evt) {
    evt.preventDefault();
}

document.addEventListener('contextmenu', mouse_input, false);

Работает на Сафари, Fire Fox, Опера. preventDefault() останавливает обычные действия от происхождения. Я должен был изменить событие, которое слушало, чтобы вместить Сафари И все равно логично. Дополнительная информация: функции, которые реализуют EventListener не должны возвращать значения так return false не имел никакого эффекта.

Другие советы

Объяснить разницу .. element.onmousedown = somefunction; это абсолютное задание; Вы замена обработчик событий на элементе. element.addEventListener(...) в качестве имени подразумевает, добавление обработчик в дополнение к любому обработчику, уже прикрепленному для мероприятия.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top