Получить выделенный текст веб-страницы в расширении Google Chrome - PullRequest
3 голосов
/ 19 июня 2010

Я занимаюсь разработкой расширения для Google Chrome. При нажатии на всплывающее окно я хотел бы, чтобы поле ввода, присутствующее в файле popup.html, содержало выделенный текст текущей веб-страницы.

Пример текстового поля:

<input id="searchBox" type="text" />

Когда текст выделен на веб-странице, текстовое поле должно содержать выбранное слово. Я пробовал с chrome.extension.getBackgroundPage().getSelection(), но он не работает.

Ответы [ 3 ]

4 голосов
/ 19 июня 2010

В группах Google была тема об этом: как получить HTML-код из списка выбора?

var selection = window.getSelection(); 
var range = selection.getRangeAt(0); 
if (range) { 
  var div = document.createElement('div'); 
  div.appendChild(range.cloneContents()); 
  alert(div.innerHTML); 
}

Вы можете использовать это в консоли или в плагине, в любом случае.

3 голосов
/ 26 декабря 2011

вот еще одно простое решение для получения выделенного текста в виде строки, вы можете легко использовать эту строку для добавления дочернего элемента div в ваш код:

              var text = '';
              if(window.getSelection){
                text = window.getSelection();
              }else if(document.getSelection){
                text = document.getSelection();
              }else if(document.selection){
                text = document.selection.createRange().text;
              }
              text=text.toString();
1 голос
/ 19 июня 2010

То, что вы пытаетесь сделать, требует большого количества кода из-за крайних мер безопасности Chrome.

chrome.extension.getBackgroundPage().getSelection() не будет работать, потому что BackgroundPage не является текущей веб-страницей.Вам нужно что-то вроде:

chrome.tabs.executeScript(null, {code:"alert(window.getSelection().toString());"})
//alerts the selected text

Однако передача этого текста обратно во всплывающее окно - это длительный и вызывающий мигрень процесс.Прочитайте Содержание сообщений и расширение сообщений , если вы готовы принять вызов.

...