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() });