Не могу получить выделенный текст / выделенный текст на вкладке в моем расширении chrome - PullRequest
0 голосов
/ 20 июня 2020

Я разрабатываю расширение chrome. Я пытаюсь получить выделенный / выделенный текст из активной вкладки и что-то с ним сделать. А пока скажем, что все, что расширение делает, это записывает выделенный текст во всплывающем окне. Кажется, я не могу этого сделать. Перепробовал много способов. контентный скрипт, фоновые скрипты. Ничего не работает. в моем manifest.json у меня есть разрешения на activeTab, contextMenus. Я пробовал несколько функций, которые принимают выделенный текст, но ничего не работает. Пример некоторых функций

const text = (window.getSelection) ?
    window.getSelection().toString() :
    document.selection.createRange().text;

console.log(text)

chrome.contextMenus.create({
  id: 'selectionGetter',
  title: 'send selected text',
  contexts: ['selection'],
});

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, 
        function(response){
        
        const url=response.url;
        const subject=response.subject;
          const body = response.body;
          
        console.log(body)
        });
      });
    
      chrome.browserAction.onClicked.addListener(function(tab) {
        chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, 
 function(response){
           sendServiceRequest(response.data);
        });
      });

Хотелось бы вашей помощи

1 Ответ

1 голос
/ 20 июня 2020

См. Как получить доступ к DOM веб-страницы, а не к DOM страницы расширения? для полного объяснения, вот краткая иллюстрация:

chrome.tabs.executeScript({code: 'getSelection().toString()'}, ([sel] = []) => {
  if (!chrome.runtime.lastError) {
    document.body.textContent = 'Selection: ' + sel;
  }
});

Если у вас default_popup объявлено в манифесте . json затем поместите этот код во всплывающее окно. js и поместите <script src=popup.js></script> во всплывающее окно. html. Он будет запускаться каждый раз при отображении всплывающего окна.

В противном случае поместите его в chrome .browserAction.onClicked listener в фоновом скрипте .

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