2011-09-19 70 views
4

我有一個Web應用程序,其中有鼠標懸停和鼠標按下事件;我使用它們來選擇和操作我的應用程序是編輯器的圖形語言。爲了防止火狐從顯示出來供右鍵/上下文菜單,我已經放在:preventDefault禁止在Mac上的Firefox中的右鍵單擊菜單,但不是Windows

if (evt.preventDefault) { 
    evt.preventDefault(); 
} 

在每個我的鼠標向上和鼠標按下事件處理程序的頂部。我不想回報錯誤;我真的希望事件傳播。

在Mac上,右鍵菜單不顯示;這是我所期望的。然而,在Windows上,它固執地出現,儘管Firebug確認我正在調用「preventDefault」,同樣「defaultPrevented」被設置爲true。

任何想法是什麼給?有沒有其他人遇到這個問題?我在Mac和Windows上運行Firefox 6.0.2。

[更新:最近的Firefox版本產生了在Mac和Windows一致的結果:在上下文菜單中沒有這兩個平臺上被抑制]

+0

FF可以選擇禁用右鍵單擊禁用程序,並將其隱藏在高級javascript選項(「禁用或替換上下文菜單」)中。 –

+0

此選項在我的Mac版本的Firefox和我的Windows版本的Firefox上均已設置(啓用),因此必須在此處進行其他操作。 –

+0

你是否也爲點擊做了這個?或者只是mousedown和mouseup? –

回答

11

好吧。把它放在一邊並回到它幾次後,我終於找到了解決方案。

試圖處理各種鼠標偵聽器中上下文菜單的外觀看起來有根本的缺陷。相反,感謝代碼我發現here,我被置於contextmenu事件的氣味。該事件似乎是處理事情的正確方式,但實際上在該網站上發佈的代碼並沒有這樣做 - 只是調用「stopPropagation」並返回false是不夠的。

以下爲我工作:

element.addEventListener('contextmenu', function(evt) { 
    evt.preventDefault(); 
}, false); 

這與Firefox 10.0在Mac和Firefox 9.0.1和10.0對Windows 7的

-2
  1. 轉到工具>選項。
  2. 轉到內容選項卡。
  3. 單擊啓用JavaScript選項旁邊的高級按鈕。
  4. 禁用或替換上下文菜單。選中此框,它會再次神奇地工作。

在JavaScript中無法繞過此設置。

+0

這個選項在我的Mac版本的Firefox和我的Windows版本的Firefox上都被選中,所以這裏一定有其他的東西在進行着。 –

0

經過測試,這個選項在Mozilla的第23版本中刪除。