2013-04-25 2 views
0

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

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

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

ответ

2

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

Если вы хотите событие MouseUp работать в сафари при выстреле с правой кнопкой мыши, вам нужно будет отключить контекстное меню, добавив этот атрибут в 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)"> 
+0

О нет. Сожалею. Вы меня приняли. Я не хочу отключать onmouseup и onmousedown для щелчка правой кнопкой мыши. Я хочу вызвать onmouseup для браузеров сафари. – Cyril

+0

Есть ли причина, по которой вы хотите, чтобы она обрабатывала правые клики? –

+0

Я обновил свой ответ с помощью способа справиться с этим –

Смежные вопросы