Подтвердить что ты не робот

Расширение Chrome. Получите весь текстовый контент текущей вкладки.

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

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

Это то, что я написал в содержании script:

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 возвращает undefined. Мне нужен весь текст текущей вкладки в alltext. Может ли кто-нибудь помочь мне в этом? Спасибо.

4b9b3361

Ответ 1

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

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


Пример

В содержании script

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

Добавлено

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

  • chrome.tabs.getSelected, чтобы выбрать вкладку
  • chrome.tabs.sendRequest отправить запрос на контент script,
  • и 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;
        }
    });
});

Содержимое script

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

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