Я работал над небольшим расширением Chrome с проблемой, о которой я, похоже, не оглядывался, и хотел бы, чтобы кто-то посмотрел на нее с новой перспективой.
Целью является создание расширения chrome, которое позволяет вам выбирать текст на любом данном веб-сайте и отображать возможность отправки выбора на другой веб-сайт с использованием элемента contextmenu.
Мой manifest.json выглядит следующим образом:
{
"name": "Context Menu Search",
"description": "Opens the selected text as keyword in a new window",
"version": "0.1",
"permissions": ["contextMenus"],
"background_page": "background.html"
}
Затем background.html:
<script src="rightclick.js"></script>
И rightclick.js:
var selection_callbacks = [];
function getSelection(callback) {
selection_callbacks.push(callback);
chrome.tabs.executeScript(null, { file:"selection.js" });
};
chrome.extension.onRequest.addListener(function (request) {
var callback = selection_callbacks.shift();
callback(request);
});
function sendSearch(selectedText) {
var serviceCall = 'http://www.google.com/search?q=' + selectedText;
chrome.tabs.create({url: serviceCall});
}
var tx = getSelection();
var title = "Test '" + tx + "' menu item";
var id = chrome.contextMenus.create({"title": title, "contexts":[selection],
"onclick": sendSearch(tx)});
console.log("selection item:" + id);
Плюс selection.js:
chrome.extension.sendResponse(window.getSelection().toString());
Пока создание контекстного меню отлично работает, но выделенный текст вообще не отображается. Если у кого-нибудь есть предложения по решению этой проблемы, а также упростить script, я был бы признателен за ваш вклад.
Большое спасибо.