3

以下のコードが選択に表示されないという問題がWebページで検出されました。

現在、テキストを選択しているときに、コンテキスト メニューが表示されません。

コード

 function getword(info,tab) {

 if (info.menuItemId == "google") {
console.log("Google" + info.selectionText + " was clicked.");
chrome.tabs.create({ 
    url: "http://www.google.com/search?q=" + info.selectionText,
})
 } else {
 console.log("Bing" + info.selectionText + " was clicked.");
  chrome.tabs.create({ 
    url: "http://www.bing.com/search?q=" +  info.selectionText,
 })
}
};

chrome.contextMenus.onClicked.addListener(getword);

chrome.runtime.onInstalled.addListener(function() {
  var contexts = ["page","selection","link","editable"];
  for (var i = 0; i < contexts.length; i++) {
    var context = contexts[i];
    var title = "Google Search";
    var id = chrome.contextMenus.create({"title": title, "contexts":[context],
                                     "id": "google"});
    console.log("'" + context + "' item:" + id);
   }
   chrome.contextMenus.create({"title": "Bing Search", "id": "child1"});

 });
4

1 に答える 1

6

プロパティの値は"id"一意である必要があります。バックグラウンド ページのコンソールを表示すると、次のエラーが表示されます。

contextMenus.create: Cannot create item with duplicate id google
    at chrome-extension://ghbcieomgcdedebllbpimfgakljlleeb/background.js:23:34 

chrome.contextMenus.createコンテキストごとに呼び出すのではなく、コンテキストのリストをcontextsキーに割り当てます。

chrome.runtime.onInstalled.addListener(function() {
  var contexts = ["page","selection","link","editable"];
  var title = "Google Search";
  chrome.contextMenus.create({
    "title": title,
    "contexts": contexts,
    "id": "google"
  });
  // ...
});
于 2013-10-11T20:58:36.213 に答える