2013-04-25 71 views
0

這是我從w3schools那裏得到的例子,在那裏我單獨爲safari瀏覽器收到奇怪的行爲。onmouseup不在safari中工作

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

Safari瀏覽器: 如果我們對段落的左上角點擊,文本變成紅色,當我離開它,它變成綠色。 這很好。 現在,我右鍵單擊段落頂部。現在,文本顏色變成紅色,當我離開它時,它永遠不會變成綠色。即如果我們使用右鍵點擊,onmouseup不能在safari中工作。誰能告訴我爲什麼? 任何解決方案?

回答

2

在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)"> 
+0

哦,不。抱歉。你誤會了我。我不想禁用onmouseup和onmousedown右鍵單擊。我想觸發Safari瀏覽器的onmouseup – Cyril 2013-04-25 06:55:11

+0

您想讓它處理右鍵單擊的原因是否有原因? – 2013-04-25 06:56:08

+0

我用一種處理方式更新了我的答案 – 2013-04-25 07:05:30