我想停止HTML5畫布上的鼠標右鍵,彈出上下文菜單,因爲它受到鼠標控制遊戲的限制。用WebGL環境在畫布上點擊右鍵點擊
我試過將oncontextmenu="return false;"
添加到canvas
標籤屬性中。這適用於畫布使用2D上下文時的效果,但在Firefox和Chrome中使用WebGL上下文時,此功能不可使用。
這是由標準指定的,還是兩個同時發生的瀏覽器錯誤?有什麼辦法可以解決這個問題,並阻止WebGL上下文中的右鍵點擊?
我想停止HTML5畫布上的鼠標右鍵,彈出上下文菜單,因爲它受到鼠標控制遊戲的限制。用WebGL環境在畫布上點擊右鍵點擊
我試過將oncontextmenu="return false;"
添加到canvas
標籤屬性中。這適用於畫布使用2D上下文時的效果,但在Firefox和Chrome中使用WebGL上下文時,此功能不可使用。
這是由標準指定的,還是兩個同時發生的瀏覽器錯誤?有什麼辦法可以解決這個問題,並阻止WebGL上下文中的右鍵點擊?
每個瀏覽器的結果可能不同,因此請確保這適用於所有目標瀏覽器。我只在Chrome中試過。
yourCanvas.addEventListener('contextmenu', function(e) {
if (e.button === 2) {
e.preventDefault();
return false;
}
}, false);
工作例如:http://jsfiddle.net/cK9Rt/
(它會說「測試」在控制檯中,但不會使上下文菜單)
我試過在Chrome 15上,它根本不起作用。該功能似乎永遠不會被調用。 – AshleysBrain
奇怪,我使用17,它的工作 –
http://jsfiddle.net/cK9Rt/ –
阻止默認的瀏覽器操作,當我使用下面的代碼
element.onevent=function(e){
e.preventDefault();
return false;
}
此代碼確保不會發生默認操作
從不使用html屬性來防止默認值。
當我看到你的問題,我想這在同等情況下:
canvas.oncontextmenu=function(e){
e.preventDefault();
return false;
}
和它的工作正是因爲它應該。
我希望這有助於
需要用老辦法右擊處理程序做這個問題的任何未來的觀衆(e.preventDefault(),e.stopPropagation()),因爲這 – noob
真的不是一個WebGL的問題爲什麼不把問題編輯爲更通用的問題,如「在瀏覽器中阻止右鍵單擊」或「阻止瀏覽器中的上下文菜單」?只是一個想法。 – gman