onmouseup не работает в сафари

Это пример, который я получил от w3schools, где я получаю странное поведение только для браузера Safari.

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onmousedown

Safari: если щелкнуть левой кнопкой мыши верхнюю часть абзаца, текст станет красным, а когда я его оставлю, - зеленым. Все в порядке. Теперь я щелкаю правой кнопкой мыши в верхней части абзаца. Теперь цвет текста становится красным, а когда я его покидаю, он НИКОГДА не становится зеленым. т.е. onmouseup не работает в сафари, если мы используем правый клик. Кто-нибудь может сказать мне, почему? Любое решение для этого?

1 ответ

Решение

В safari кажется, что при щелчке правой кнопкой мыши фокус делается на контекстном меню, поэтому контекстное меню получает событие mouseup, а не элемент P. Что касается решения, вы можете обнаружить кнопку мыши, чтобы она не работала при щелчке правой кнопкой мыши. События правого клика беспорядочные, если вы не хотите обрабатывать пользовательское контекстное меню.

Если вы хотите, чтобы событие mouseup работало в safari при нажатии правой кнопки мыши, вам необходимо отключить контекстное меню, добавив этот атрибут в элемент P:

oncontextmenu="return false">

Также возможно определить, вызвало ли левое нажатие событие (обычно это кнопка, которую вы хотите обработать):

function mouse_handler(event) {
    var evt=window.event||event;
    var button = evt.which || evt.button;
    if (button == 1) { // if left mouse button
        // handle the event
    }
}

В примере из w3schools это приведет к чему-то вроде этого:

function myFunction(elmnt,clr,event)
{
    var evt=window.event||event;
    var button = evt.which || evt.button;
    if (button == 1) { // if left mouse button
        elmnt.style.color=clr;
    }
}

Затем передать событие в вызов функции:

<p onmousedown="myFunction(this,'red',event)" onmouseup="myFunction(this,'green',event)">
Другие вопросы по тегам