Obtenir la sélection DOM dans le contextemen de l'extension chrome

J'essaie d'obtenir le DOM que j'ai sélectionné par ContextMenu dans l'extension Chrome.

Code:

 chrome.contextMenus.onClicked.addListener(function(info, tab){ // the info.selectionText just the text, don not contains html. }); chrome.contextMenus.create({ title: "Demo", contexts: ["selection"], id: "demo" }); 

Mais l'information.selectionTexte ne contient pas le DOM HTML. Existe-t-il un moyen d'obtenir le dom de la sélection dans le contexte d'extension ChromeMenu ?. Veuillez suggérer. Merci.

Pour accéder à la sélection, vous devrez injecter un script de contenu dans la page.

Là, vous pouvez appeler getSelection() pour obtenir un objet de Selection et jouer avec des plages pour extraire le DOM dont vous avez besoin.

 // "activeTab" permission is sufficient for this: chrome.contextMenus.onClicked.addListener(function(info, tab){ chrome.tabs.executeScript(tab.id, {file: "getDOM.js"}) }); 

GetDOM.js:

 var selection = document.getSelection(); // extract the information you need // if needed, return it to the main script with messaging 

Vous voudrez peut-être consulter les documents de messagerie .

Si vous souhaitez simplement sélectionner le texte dans le menu contextuel, vous pouvez le faire en suivant le code

 function getClickHandler() { return function(info, tab) { // info.selectionText contain selected text when right clicking console.log(info.selectionText); }; }; /** * Create a context menu which will only when text is selected. */ chrome.contextMenus.create({ "title" : "Get Text!", "type" : "normal", "contexts" : ["selection"], "onclick" : getClickHandler() });