如果它們重疊,是否有排除上下文菜單類型之一的方法?
例如:
我有兩個上下文項目,可編輯和選擇。
在狀況時這兩個類型的匹配,(內部編輯選擇)chrome.contextMenus排除類型
鉻給出了兩個動作子菜單。
我想只有一個。
在這種特定情況下,我如何區分或排除其中一種類型?
如果它們重疊,是否有排除上下文菜單類型之一的方法?
例如:
我有兩個上下文項目,可編輯和選擇。
在狀況時這兩個類型的匹配,(內部編輯選擇)chrome.contextMenus排除類型
鉻給出了兩個動作子菜單。
我想只有一個。
在這種特定情況下,我如何區分或排除其中一種類型?
如果菜單項類型相同(即相同類型,類型等),則可以聲明上下文菜單並指定多個上下文。然後,如果任何上下文匹配,菜單項將顯示。
你說不過你確實需要單獨的上下文菜單聲明:標題爲
contextMenus
API不直接支持此用例。因此,下一個最佳選擇是在第三種情況下出現上下文菜單之前刪除「可編輯」的上下文菜單(並在第三種情況不再相關時恢復上下文菜單)。
在你的情況下,我會用selectionchange
來檢測用戶(de)何時選擇文本。選擇文本後,檢查輸入字段是否在選擇中(這樣做可以合併Selection
,Range
和/或DOM(遍歷)API)。如果找到輸入字段,請刪除所需的上下文菜單項。 無論您是否找到菜單項,都可以爲鍵和/或鼠標事件添加偵聽器,以檢測用戶指針是否位於輸入字段上。
下面是使用selectionchange
(https://stackoverflow.com/a/13673942/938089)和Showing context menu buttons only when right-clicked on classes that start with 「Story」的另一個示例。
謝謝Rob。我相信這是實現它的唯一方法(並因此被接受的答案),但對我的需求來說是過度的。我會保持原樣(使用子菜單版本)。 –
將兩者合併爲一個'chrome.contextMenus.create'調用時,只顯示一個菜單項。這對你來說是一種選擇嗎? –
@RobW不,不幸的是我需要爲這兩個人採取不同的行動。只有在它們重疊的情況下,我想**使注意**優先http://prntscr.com/d6gc24 –