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で書くのは初めてです。何かが足りないのかもしれません。

現在、リンクを右クリックすると、親のみが表示されます(子は表示されません)。

事前に感謝し、私の質問があまりにも「初心者」である場合は申し訳ありません。:)

4

2 に答える 2

2

親アイテムはにcontexts設定されて["link"]いますが、子アイテムのデフォルトcontextsは。です["page"]。したがって:

  • リンクを右クリックすると、親は表示されますが、子はリンクに表示されるように設定されていないため、表示されません。
  • リンク以外のものを右クリックすると、親が表示されないため、子も表示されません。

contexts子供の値は、親の値と一致するように設定する必要があり["link"]ます。

于 2013-02-11T19:27:28.383 に答える
0

私はちょうど同じようなケースでこれに遭遇しましたが、まったく同じではありません。

複数のコンテキスト(リンク、ページ、選択)をサポートする必要があるメニューを作成していますが、子メニューはページにのみ表示されます。

上記の答えは、作成用のオプションのパラメーターであるため、コンテキストを定義する必要があるという点で正しいです。ドキュメントを注意深く読んだとしても、これは苦痛な発見でした:http: //developer.chrome.com/extensions/contextMenus.html#method-create

コンテキスト(「all」、「page」、「frame」、「selection」、「link」、「editable」、「image」、「video」、「audio」、または「launcher」の列挙型のオプションの配列)のリストこのメニュー項目が表示されるコンテキスト。指定されていない場合、デフォルトは['page']です。['all']を指定することは、'launcher'を除く他のすべてのコンテキストの組み合わせと同等です。「ランチャー」コンテキストはアプリでのみサポートされており、ランチャー/タスクバー/ドックなどのアプリアイコンをクリックしたときに表示されるコンテキストメニューにメニュー項目を追加するために使用されます。プラットフォームが異なれば、ランチャーのコンテキストメニューで実際にサポートされるものに制限が生じる可能性があります。

明示的に答えるために、ソリューションを含むコードは次のとおりです。

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"]}
);

私自身の場合、私は複数のコンテキストをサポートしており、作成時にすべてを考慮する必要がありました(例: "contexts":["page"、 "link"、 "selection"])

于 2013-08-12T23:47:37.250 に答える