Расширение Chrome - получение всего текстового содержимого текущей вкладки - PullRequest
24 голосов
/ 14 декабря 2011

Я разрабатываю расширение, в котором мне нужно получить весь текстовый контент на текущей вкладке. Теперь у меня есть плагин, который получает выбранный текст из текущей вкладки. Итак, по сути я ищу его Ctrl-A :). Это то, что я сделал до сих пор, когда намекнул на @ Дерек.

Это в моем обработчике событий (это только один, есть и другие слушатели для onUpdated и т. Д.):

chrome.tabs.onSelectionChanged.addListener(function(tabId,changeInfo,tab){  
chrome.tabs.getSelected(null,function(tab){
chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, function (response) {
  selectedtext = response.data;
});
chrome.tabs.sendRequest(tab.id, {method: "getText"}, function (response) {
  alltext = response.data;
});
});
});

Вот что я написал в скрипте контента:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "getSelection")
  sendResponse({data: window.getSelection().toString()});
else if (request.method == "getText")
  sendResponse({data: document.body.innerText});
else 
  sendResponse({});
});

Однако document.body.innerText возвращает неопределенное значение. Мне нужен весь текст текущей вкладки в alltext. Может ли кто-нибудь помочь мне в этом? Спасибо.

1 Ответ

33 голосов
/ 14 декабря 2011

Вы можете использовать document.body.innerText или document.all[0].innerText, чтобы сделать это в скрипте содержимого .
Он получит все текстовое содержимое на странице без HTML-кода.

Или вы можете использовать document.all[0].outerHTML, чтобы получить HTML-код всей страницы.


Пример

В скрипте содержимого

function getText(){
    return document.body.innerText
}
function getHTML(){
    return document.body.outerHTML
}
console.log(getText());             //Gives you all the text on the page
console.log(getHTML());             //Gives you the whole HTML of the page

Добавлена ​​

Итак, вы хотите, чтобы скрипт содержимого возвращал текст во всплывающее окно. Вы можете использовать:

  • chrome.tabs.getSelected, чтобы получить выбранную вкладку,
  • chrome.tabs.sendRequest для отправки запроса на контентный скрипт,
  • и chrome.extension.onRequest.addListener для прослушивания запросов.

Всплывающая страница

chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {method: "getText"}, function(response) {
        if(response.method=="getText"){
            alltext = response.data;
        }
    });
});

Сценарий содержимого

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) {
        if(request.method == "getText"){
            sendResponse({data: document.all[0].innerText, method: "getText"}); //same as innerText
        }
    }
);

Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...