3

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

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

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

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

ответ

4

Был нить об этом на Google группах: how to get HTML code from selection?

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

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

1

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

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

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

Однако, чтобы передать этот текст обратно в всплывающее окно представляет собой длительный и мигрень вызывающие процесс. Прочитайте Contentscripts and Extension Messaging если вы заинтересованы.

+0

, но этот плагин https: // chrome.google.com/extensions/detail/fbhgckgfljgjkkfngcoeajbgndkeoaaj получает источник выбора. –

+1

Да. Он использовал то же самое, что показал вам. Heres сценарий: 'chrome.tabs.executeScript (нуль, {файл: "script.js"});' И: 'chrome.extension.onRequest.addListener ( функция (запрос, отправитель, sendResponse) { document.getElementById ("txtar"). innerText = request.viewsource; }); ' Первая часть - это в основном код, который я показал вам (кроме файла сценария), а вторая часть - обмена сообщениями. – tcooc

3

здесь еще одно простое решение, чтобы получить выбранный текст в виде строки, вы можете использовать эту строку легко присоединять 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(); 

 Смежные вопросы

  • Нет связанных вопросов^_^