Je veux créer une extension qui prend le texte sélectionné et la recherche dans Google translate, mais je ne peux pas comprendre comment obtenir le texte sélectionné.
Voici mon manifeste.json
{ "manifest_version": 2, "name": "Saeed Translate", "version": "1", "description": "Saeed Translate for Chrome", "icons": { "16": "icon.png" }, "content_scripts": [ { "all_frames": true, "js": [ "content_script.js" ], "matches": [ "http://*/*", "https://*/*" ], "run_at": "document_start" } ], "background": { "scripts": ["background.js"] }, "permissions": [ "contextMenus", "background", "tabs" ] }
Et mon fichier background.js
var text = "http://translate.google.com/#auto/fa/"; function onRequest(request, sender, sendResponse) { text = "http://translate.google.com/#auto/fa/"; text = text + request.action.toString(); sendResponse({}); }; chrome.extension.onRequest.addListener(onRequest); chrome.contextMenus.onClicked.addListener(function(tab) { chrome.tabs.create({url:text}); }); chrome.contextMenus.create({title:"Translate '%s'",contexts: ["selection"]});
Et mon fichier content_script.js
var sel = window.getSelection(); var selectedText = sel.toString(); chrome.extension.sendRequest({action: selectedText}, function(response) { console.log('Start action sent'); });
Comment puis-je obtenir le texte sélectionné?
Vous devenez un peu plus compliqué qu'il ne l'est vraiment. Vous n'avez pas besoin d'utiliser un message entre le script de contenu et la page d'arrière-plan car la méthode contextMenus.create peut déjà capturer le texte sélectionné. Essayez d'ajuster votre script de création à quelque chose comme:
chrome.contextMenus.create({title:"Translate '%s'",contexts: ["all"], "onclick": onRequest});
Ensuite, ajustez votre fonction pour simplement obtenir l'information.selectionTexte:
function onRequest(info, tab) { var selection = info.selectionText; //do something with the selection };
Veuillez noter que si vous souhaitez accéder à distance à un site externe comme Google Translate, vous devrez peut-être ajuster vos paramètres d'autorisations.