`Вернуть false` в обработчике событий, прилагаемый addeventListener или element.on *
-
27-09-2019 - |
Вопрос
Право Давайте сначала выберем это. Да, я хочу скрыть контекстное меню. Нет, я не пытаюсь помешать кому-то подъему контента с моей страницы. Его предполагаемое использование вводится для игры в браузере, и она будет ограничена определенной областью на веб-странице.
Переход от идеологического к техническому ...
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(...)
в качестве имени подразумевает, добавление обработчик в дополнение к любому обработчику, уже прикрепленному для мероприятия.