web-dev-qa-db-fra.com

Chrome Extension obtenir le texte sélectionné

Je cherche un moyen de placer le texte sélectionné dans mon Chrome.

Je veux ex. sélectionnez un texte dans le flux facebook et lorsque je clique sur mon icône, il l'obtiendra et affichera le texte sélectionné dans mon extension.

Je suis arrivé jusqu'ici:

chrome.tabs.executeScript(null, {
  code: "alert(window.getSelection().toString());"
})

il obtient le texte sélectionné et l'alerte avec un message dans Chrome. Cependant, je veux le montrer dans ma popup html. Je veux l'écrire comme ceci:

document.getElementById("output").value = "Selected text here(but how)"

Besoin d'aide! et je sais qu'il y a une autre question à ce sujet, mais ils ne m'ont pas donné exactement ce que je voulais ..

28

Vous pouvez utiliser la dernière expression évaluée par le code exécuté dans une fonction de rappel:

chrome.tabs.executeScript( {
  code: "window.getSelection().toString();"
}, function(selection) {
  document.getElementById("output").value = selection[0];
});
35
rsanchez

Vous pouvez le faire en utilisant Messagerie des extensions . Fondamentalement, votre "page d'arrière-plan" enverra la demande à votre service. Par exemple, disons que vous avez un "popup" et une fois que vous cliquez dessus, il fera une "recherche Google" qui est votre service.

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if (request.method == "getSelection")
      sendResponse({data: window.getSelection().toString()});
    else
      sendResponse({}); // snub them.
});

Quelques références

  1. Création d'une extension chrome qui prend le texte en surbrillance sur la page et l'insère dans une zone de texte dans popup.html

Ou vous pouvez utiliser ce plugin

  1. https://chrome.google.com/webstore/detail/view-selection-source/fbhgckgfljgjkkfngcoeajbgndkeoaaj
2
Vaibs_Cool

Pour Angular 8.2 J'utilise ce code:

chrome.tabs.executeScript( { code: 'window.getSelection().toString();'}, selectedText => {
 (document.getElementById('text-input') as HTMLInputElement).value = selectedText[0];
  console.log(selectedText[0]);
});
1
Vasya Shevchenko