J'ai travaillé sur une petite extension Chrome avec un problème que je ne peux pas me tromper et j'apprécierais que quelqu'un regarde avec une nouvelle perspective.Sélection de texte et affichage dans le menu contextuel chrome extension
L'objectif est de créer une extension chrome qui vous permet de sélectionner du texte sur un site Web donné et d'afficher une option permettant d'envoyer la sélection à un autre site Web à l'aide d'un élément de menu contextuel.
Mon manifest.json ressemble à ceci:
{
"name": "Context Menu Search",
"description": "Opens the selected text as keyword in a new window",
"version": "0.1",
"permissions": ["contextMenus"],
"background_page": "background.html"
}
Puis background.html:
<script src="rightclick.js"></script>
Et 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);
plus selection.js:
chrome.extension.sendResponse(window.getSelection().toString());
Jusqu'à présent, la création de menu contextuel fonctionne très bien, mais le texte sélectionné n'apparaît pas du tout. Si quelqu'un a des suggestions sur la façon de résoudre ce problème ainsi que de simplifier le script, j'apprécierais votre contribution.
Merci beaucoup.
Merci beaucoup pour la Serg de réponse détaillée, vous avez quitté le sortir du% dans la partie de code de votre réponse, mais je l'ai eu à travailler avec votre suggestion ! – baik
Est-il possible d'obtenir le texte sélectionné en tant que contenu ligne par ligne avec de nouveaux caractères de ligne? – Barani
Et il peut même être un peu plus court. La [page d'exemple sur contextMenus] (https://developer.chrome.com/extensions/samples#search:contextmenus) montre '' chrome.contextMenus.create ({"title": title, "contexts": [contexte], "onclick": genericOnClick}); '', donc sans passer explicitement les paramètres '' info'' et '' tab'' et en créant une fonction anonyme qui appelle une fonction nommée. Votre exemple deviendra: '' chrome.contextMenus.create ({title: "Test% s élément de menu", contextes: ["selection"], onclick: sendSearch (info.selectionText);}}); '' when '' Le premier argument de sendSearch'' est '' info''. –