我們有自定義上下文菜單,用右鍵單擊來替換瀏覽器菜單。我們希望能夠以與瀏覽器隱藏默認上下文菜單相同的方式來中止(隱藏)上下文菜單 - 在未註冊爲點擊的菜單之外的任何地方點擊。該解決方案應適用於綁定事件和默認瀏覽器操作,但不會妨礙其他事件的能力,即。 hover
免燒。如何禁用上下文菜單中止的所有單擊操作?
一個例子:
在Firefox中,右鍵點擊此頁面上打開上下文菜單。將鼠標懸停在此頁頂部的
Questions-Tags-Users-Badges-Unanswered
。即使上下文菜單已打開,突出顯示仍然存在。現在,點擊此頁面上的文本區域,如頂部的搜索框。上下文菜單將隱藏,但光標不會將文本框對焦(除非在菜單關閉的情況下再次單擊它)。
我們如何在JavaScript中模擬這種行爲?
拒絕選項我們已經考慮:
使用透明DIV在整個頁面。問題:這可以捕捉點擊任何地方,但打破懸停事件和懸停CSS。
檢查每個點擊處理程序中的上下文菜單打開變量,並將處理程序分配給所有鏈接,並輸入元素以檢測上下文菜單打開狀態,該狀態關閉上下文菜單,取消打開狀態並阻止處理程序默認。問題:非常草率的代碼和維護噩夢。
只是報告說,在我的電腦(Windows版的Firefox)上,通過上下文菜單打開單擊並集中在文本框中 – guest
使用Firefox 37在Ubuntu上,第一次點擊不會集中,但只會關閉上下文菜單,如上所述。 – geira