2013-02-11 88 views
2

我想爲我的上下文菜單添加子項,但由於某種原因它不適用於我。這裏是我的代碼:將子項添加到上下文菜單鏈接

var parent1 = chrome.contextMenus.create({"title": "Trigger Rank", "contexts":["link"]}); 

var child1 = chrome.contextMenus.create 
(
    {"title": "Rank 1", "parentId": parent1, "onclick": genericOnClick} 
); 
var child2 = chrome.contextMenus.create 
(
    {"title": "Rank 2", "parentId": parent1, "onclick": genericOnClick} 
); 
var child2 = chrome.contextMenus.create 
(
    {"title": "Rank 3", "parentId": parent1, "onclick": genericOnClick} 
); 



var parent2 = chrome.contextMenus.create({"title": "Target Rank", "contexts":["link"]}); 
var child1 = chrome.contextMenus.create 
(
    {"title": "Rank 1", "parentId": parent2, "onclick": genericOnClick} 
); 
var child2 = chrome.contextMenus.create 
(
    {"title": "Rank 2", "parentId": parent2, "onclick": genericOnClick} 
); 
var child3 = chrome.contextMenus.create 
(
    {"title": "Rank 3", "parentId": parent2, "onclick": genericOnClick} 
); 

似乎很簡單的,但它是我的第一個Chrome擴展,並第一次在JavaScript編寫。所以可能是我錯過了一些東西。

當前,當右鍵單擊一個鏈接,只顯示父母(而不是孩子)。

在此先感謝和抱歉,如果我的問題太「新手」。 :)

回答

2

您的父母項目有contexts設置爲["link"],但您的子項目的默認contexts["page"]。因此:

  • 當你右鍵點擊一個鏈接,父母出現,但孩子沒有,因爲他們沒有設置顯示鏈接。
  • 當你右鍵點擊鏈接以外的東西時,父母不會出現,所以孩子也不會顯示。

您必須將您孩子的contexts值設置爲與父母的["link"]值相匹配。

+0

你說得對。謝謝 :) – r3x 2013-02-12 08:21:21

0

我剛剛遇到了一個類似但不完全相同的情況。

我正在創建一個需要支持多個上下文(鏈接,頁面,選擇)的菜單,並且只顯示了頁面的子菜單。

上面的答案是正確的,因爲您必須定義您的上下文,因爲它是創建的可選參數。雖然我讀的文檔仔細,這是一個痛苦的發現:http://developer.chrome.com/extensions/contextMenus.html#method-create

上下文(「全部」,「網頁」,「幀」, 「選擇」,「鏈接」的枚舉的數組(可選),「編輯「,」圖像「,」視頻「,」音頻「或 」啓動器「)此菜單項將出現的上下文列表。如果未指定,則默認 轉換爲['page']。指定['all']等同於除「啓動器」以外的所有其他上下文的組合 。 「啓動器」上下文僅受應用程序支持,用於將菜單 項添加到在單擊啓動器/任務欄/ dock/etc中的應用程序圖標 時出現的上下文菜單。不同的平臺可能會對啓動器上下文菜單中實際支持的內容施加限制。

要明確地回答,這裏是你的代碼的解決方案:

var child1 = chrome.contextMenus.create 
(
    {"title": "Rank 1", "parentId": parent1, "onclick": genericOnClick, "contexts":["link"]} 
); 
var child2 = chrome.contextMenus.create 
(
    {"title": "Rank 2", "parentId": parent1, "onclick": genericOnClick, "contexts":["link"]} 
); 
var child2 = chrome.contextMenus.create 
(
    {"title": "Rank 3", "parentId": parent1, "onclick": genericOnClick, "contexts":["link"]} 
); 

就我自己來說,我是支持多種環境和所有必要的建立(如「環境」進行會計處理: [「page」,「link」,「selection」])

相關問題