2016-05-27 51 views
1

左擊我有這樣的代碼:右鍵的作用就像對事件

document.getElementById("1").oncontextmenu = function() { 
    return false 
} 

它禁止小窗口點擊右鍵(僅按鈕/圖片)後顯示。

在我的代碼(https://jsfiddle.net/nnuyguat/)上一切工作正常,除了當我做一個右擊圖像,因爲它觸發左鍵單擊事件並更改圖像,直到我移動鼠標。

另一個相關的問題是,如果我按下左鍵不釋放,然後右鍵單擊(釋放右鍵),它也會改變圖像。

我需要通過右鍵點擊來防止圖像變化。它應該作爲瀏覽器的關閉按鈕(除了它是另一個圖像,它不關閉任何東西)。

+0

可能重複[是否右鍵單擊一個Javascript事件?](http://stackoverflow.com/questions/2405771/is-right-click-a-javascript-event) –

+2

@ Error404這不是重複,因爲在那其他問題沒有解決這個問題的答案,甚至沒有被接受的答案。 – JavaScript

+1

但它有解決方案來處理您的問題中想要的右鍵單擊事件。當然,永遠不會總是有兩個問題相等(或者至少很奇怪兩個一般問題會是平等的,也許是相關的)。如果你可以處理右鍵單擊,那麼你也可以避免它。 –

回答

1

右鍵單擊事件不會觸發左鍵單擊。它只是激活你的對象。您的圖片顯示「點擊」,但不準確。它應該說「活躍」。

其次,數字不是有效的ID。所以重命名你的div從id =「1」到id =「one」或類似。

最後,嘗試使用此代碼,而不是你的:

document.getElementById("one").addEventListener('contextmenu', function(ev) { 
    ev.preventDefault(); 
    alert('hello from right click'); 
    return false; 
}, false); 

https://jsfiddle.net/nnuyguat/3/

+0

我會改變圖像和身份證。您提供的代碼足以讓我使用它,謝謝! – JavaScript

0

它是因爲oncontextmenu事件。刪除它,它會工作

+0

這不是問題,如果我刪除它仍然不起作用。問題在於點擊時圖像變化的事件不是用於左鍵點擊,而是用於任何點擊。 – JavaScript

2

您可以使用event.button來檢查按下哪個按鈕,因爲event.button返回一個數字,指示哪個鼠標按鈕被按下。

Source

編輯:

if (event.button === 2){ 
    // run your function 
} 

這應該是正確的,因爲我從來沒有使用過這一點。

+0

你能用一些代碼來支持它嗎?一個例子或直接改變我的代碼。 – JavaScript

1

問題上右鍵點擊你的影像變更不涉及您的JavaScript,但你的CSS。當用戶激活元素時,CSS僞類匹配。根據規範,這應該只是當元素用主鼠標按鈕激活時,但它似乎像大多數瀏覽器不正確實施規範。有關信息,請參閱此question

一個解決辦法可能是放棄:active僞類,並設置一個函數,在左鍵單擊時明確更改內容。

+0

右鍵單擊時,是否可以暫時放棄/刪除':active',或者在右鍵單擊時將圖像更改爲正確的? – JavaScript