2014-03-31 104 views
5

我試圖禁用鼠標右鍵單擊選項。所以我用contextmenu綁定函數來防止它。這工作正常,但當shiftmosue right click一起按時,contextmenu綁定功能不觸發,但它顯示contextmenu。手段沒有得到警報,但它顯示菜單。如何禁用鼠標右鍵菜單,當在Firefox中按下shift鍵時?

這是我試過的代碼。

$(document).ready(function(){ 
    $(document).bind("contextmenu",function(e){ 
    alert('Context Menu event has fired!'); 
    return false; 
}); 
}); 

爲了捕獲shift按鈕和鼠標右鍵單擊我做下面的代碼,但這沒有幫助。可能是我做錯了什麼。

$(document).ready(function(){ 

    $(document).bind("contextmenu",function(e){ 
    alert('Context Menu event has fired!'); 
    return false; 
}); 

    var shift = false; 
jQuery(document).on("keydown", function(event) { 
      //check for shift key is pressed 
     if (event.which === 16) { 
     shift = true; 
         } 
}); 
jQuery(document).mousedown(function(e) { 
    // e.which === 3 is for mouse right click 
    if (e.which === 3 && shift === true) { 
console.log("both action are triggered"); 
     return false; // how to stop the contextmenu action here 
          } 
}); 
}); 

我試着給e.preventDefault而不是返回false。我認爲當點擊shift時,上下文菜單事件本身不會在Firefox中觸發。

如何禁用鼠標右鍵點擊這種情況下的Firefox?任何幫助或線索將是沒什麼太大的幫助

JSFIDDLE 注意 這不是在鉻發生。這隻發生在Firefox。這是一個錯誤?

+0

http://jsfiddle.net/guvenaltuntas/9RYsb/也試過並失敗 –

回答

3

這不是一個錯誤,它是一個功能!

http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#context-menus

用戶劑可以用於繞過上下文菜單 處理模型,以確保用戶可以隨時訪問該UA的 默認上下文菜單的裝置。例如,用戶代理可以處理具有按下Shift鍵的 右鍵單擊,使其 不會觸發上下文菜單事件,而是始終顯示 默認上下文菜單。

按照設計,您將無法在Firefox中執行此操作。這很煩人,特別是對於複雜的網絡應用程序和遊戲,但它是硬編碼到瀏覽器中,並且無法在JavaScript中禁用它(我知道)。

責備標準,而不是Mozilla。

0

Javascript code to disable mouse right click

<script language="javascript"> 
    document.onmousedown=disableRightclick; 
    status="Disabled"; 
    function disableRightclick(event) 
    { 
     if(event.button==2) 
     { 
     alert(status); 
     return false;  
     } 
    } 
    </script> 

在HTML正文標記設置oncontextmenu屬性設置爲false。

<body oncontextmenu="return false"> 
... 
</body> 

免責聲明:提供的鏈接是我寫的博客。希望 這解決了這個問題。

相關問題