Расширение Chrome получает выделенный текст

Я ищу способ получить выделенный текст в своем расширении Chrome.

Я хочу, чтобы бывшая. выберите текст в фиде фейсбука, и когда я нажму на значок, он получит его и покажет выделенный текст в моем расширении.

Я получил это до сих пор:

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

он получает выделенный текст и предупреждает об этом с сообщением в Chrome. Однако я хочу показать его в своем html-всплывающем меню. Я хочу написать это следующим образом:

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

Нужна помощь! и я знаю, что есть другие вопросы по этому поводу, но они не дали мне именно то, что я хочу.

Ответы

Ответ 1

Вы можете использовать последнее выражение, оцениваемое исполняемым кодом, в функции обратного вызова:

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

Ответ 2

Вы можете сделать это, используя Расширения сообщений. В принципе, ваша "справочная страница" отправит запрос на ваш сервис. Например, скажем, у вас есть "всплывающее окно", и как только вы нажмете на него, он выполнит "поиск Google", который является вашим сервисом.

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

Некоторые ссылки

1) Создание расширения chrome, которое выделяет выделенный текст на странице и вставляет его в текстовое поле в popup.html

Или вы можете использовать этот плагин

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