2011-12-03 89 views
2

我想停止HTML5畫布上的鼠標右鍵,彈出上下文菜單,因爲它受到鼠標控制遊戲的限制。用WebGL環境在畫布上點擊右鍵點擊

我試過將oncontextmenu="return false;"添加到canvas標籤屬性中。這適用於畫布使用2D上下文時的效果,但在Firefox和Chrome中使用WebGL上下文時,此功能不可使用。

這是由標準指定的,還是兩個同時發生的瀏覽器錯誤?有什麼辦法可以解決這個問題,並阻止WebGL上下文中的右鍵點擊?

+0

需要用老辦法右擊處理程序做這個問題的任何未來的觀衆(e.preventDefault(),e.​​stopPropagation()),因爲這 – noob

+0

真的不是一個WebGL的問題爲什麼不把問題編輯爲更通用的問題,如「在瀏覽器中阻止右鍵單擊」或「阻止瀏覽器中的上下文菜單」?只是一個想法。 – gman

回答

7

每個瀏覽器的結果可能不同,因此請確保這適用於所有目標瀏覽器。我只在Chrome中試過。

yourCanvas.addEventListener('contextmenu', function(e) { 
     if (e.button === 2) { 
     e.preventDefault(); 
     return false; 
     } 
    }, false); 

工作例如:http://jsfiddle.net/cK9Rt/

(它會說「測試」在控制檯中,但不會使上下文菜單)

+0

我試過在Chrome 15上,它根本不起作用。該功能似乎永遠不會被調用。 – AshleysBrain

+0

奇怪,我使用17,它的工作 –

+0

http://jsfiddle.net/cK9Rt/ –

0

阻止默認的瀏覽器操作,當我使用下面的代碼

element.onevent=function(e){ 
    e.preventDefault(); 
    return false; 
} 

此代碼確保不會發生默認操作

從不使用html屬性來防止默認值。

當我看到你的問題,我想這在同等情況下:

canvas.oncontextmenu=function(e){ 
    e.preventDefault(); 
    return false; 
} 

和它的工作正是因爲它應該。

我希望這有助於