2012-03-23 67 views
0

這是一個相當常見的模式,它有一個對話框,菜單或其他HTML元素,並在其中彈出一個鏈接以響應點擊。例如,如果您單擊Stack Overflow編輯框上方的橙色問號,則會爲「鏈接」,「圖像」等添加一堆鏈接。然後,當再次單擊問號時,菜單將消失。是否有可能檢測到右鍵單擊瀏覽器上下文菜單上的左鍵單擊?

我有一個類似的設置,只有當用戶單擊除菜單以外的任何地方時,我只想讓菜單消失。這不難($(document.body).click(handleClickElsewhere))。但是,什麼是硬的是以下情況:

  1. 用戶點擊彈出菜單
  2. 用戶右鍵點擊菜單中的其中一個鏈接(使瀏覽器右鍵菜單出現)
  3. 在瀏覽器的上下文菜單上
  4. 用戶左鍵點擊,「打開新的標籤頁」菜單項
  5. ,用戶被引導到一個新的選項卡中的鏈接,但
  6. 菜單將保持打開回到原來的頁面上

關於上面的難題就是我想在這種情況下關閉菜單;當用戶返回到原始選項卡時,它看起來很傻,菜單仍處於打開狀態。不幸的是,似乎沒有任何方法可以檢測到用戶點擊了「在新標籤中打開」,因此我無法關閉菜單作爲迴應。我可以關閉菜單以響應用戶的右鍵單擊(上面的步驟#2),但是他們將無法選擇「在新選項卡中打開」,因爲鏈接將消失。

我試過jQuery的click,mouseup,mousedown和contextmenu事件,但他們都沒有發現這種情況。

有其他人想出了一個解決這個?或者,如果不可能,比我更有見識的人能夠明確地解釋爲什麼?我的猜測是,瀏覽器並沒有告訴你有關第4步中的點擊,但我沒有真正的猜測。

回答

1

你可以檢查是否the window lost focus,之後做出適當的反應(這是關閉菜單)

但這種假定瀏覽器設置爲「切換到新的選項卡」默認情況下。有些用戶可能會選擇在後臺打開新選項卡的設置,因此主窗口不會失去焦點,並且此方法不起作用。 (但是,嘿,誰想要關閉菜單,如果我仍然在看它呢?)

+0

這是一個好主意,但該方法有一個小問題:在我的瀏覽器中,至少當您選擇「在新標籤中打開「它不會立即切換到該選項卡。所以,當用戶點擊新選項卡時,菜單應該消失,直到它出現。如果這是可能的最佳結果,但是如果有任何方法可以避免它會很好。 – machineghost 2012-03-23 23:03:27

+0

最近的人可以得到的是檢測上下文菜單事件http://stackoverflow.com/a/4909687/575527但不是被點擊的項目。 – Joseph 2012-03-23 23:14:01

+0

這就是我所害怕的;謝謝你的重點建議:) – machineghost 2012-03-24 00:58:50

相關問題