ページで選択したテキストを 4 つのストアから検索するためのコンテキスト メニュー項目を追加する Chrome 拡張機能を作成しました。この意味で拡張機能は問題なく動作しますが、ユーザーからキーボード ショートカットも実装するように求められました。これまでのところ、ショートカットは機能していますが、検索を行うために選択したテキストをキャプチャすることができません。ここで助けてくれる人はいますか?
マニフェスト.json
{
"name": "Context Shop Search",
"description": "Searches shops for selected text using the context menu",
"version": "0.6",
"manifest_version": 2,
"permissions": ["contextMenus", "tabs"],
"background": {
"scripts": ["jquery.js", "background.js"]
},
"commands": {
"search": {
"suggested_key": {
"default": "Ctrl+Shift+S"
},
"description": "Search Stores"
}
}
}
Background.js
var urls = ["http://groceries.asda.com/asda-webstore/landing/home.shtml?cmpid=ahc-_-ghs-asdacom-dsk-_-hp-_-sub_title#/search/", "http://www.waitrose.com/shop/HeaderSearchCmd?defaultSearch=GR&searchTerm=&search=Search", "http://www.ocado.com/webshop/getSearchProducts.do?clearTabs=yes&isFreshSearch=true&entry=", "http://www.tesco.com/groceries/Product/Search/Default.aspx?searchBox=&newSort=true&search.x=-1042&search.y=-63&search=Search"];
var searchUrls = [];
function Search(info) {
//alert(info.selectionText);
var selection = info.selectionText;
searchUrls[0] = urls[0].concat(selection);
searchUrls[1] = urls[1].replace("searchTerm=", "searchTerm=".concat(selection));
searchUrls[2] = urls[2].concat(selection);
searchUrls[3] = urls[3].replace("searchBox=", "searchBox=".concat(selection));
chrome.windows.create({
url: searchUrls,
height: 768,
width: 1024
});
}
chrome.commands.onCommand.addListener(function (command) {
alert("sometext");
});
chrome.contextMenus.create({
id: "ctxtSearch",
title: "Search '%s' in all stores",
contexts: ["selection"],
onclick: Search
})
多数のサイトを検索して、「コンテンツ スクリプトを使用する」という回答のさまざまなバリエーションを見つけましたが、ほとんどの例では、明らかに使用したくないさまざまなブラウザー アクションまたはクリック イベントを使用しており、かなり新しいものでした。 javascript (これは私が最初に書いたものです) は、私のニーズに合うようにこれらの例を試して微調整するのが難しいことがわかりました。
ご意見をお寄せいただきありがとうございます。