Как заставить windows.getSelection возвращать выделенный текст - PullRequest
0 голосов
/ 20 июня 2019

Может кто-нибудь сказать мне, почему я не могу получить строку для выделенного текста на любой странице, используя windows.getSelection (). ToString ()?

Сценарий работает в фоновом режиме, хотя я назвал его popup.js.

Все, что я могу найти, показывает изменение этого, но в моем коде это всегда возвращает нуль.Я вызываю window.getSelection () при нажатии комбинации клавиш.Текст определенно выделен, но результат всегда равен нулю.

manifest.json
{

  "name": "CM_TextDiff",
  "version": "1.0",
  "manifest_version": 2,


  "description": "Highlight changes in two lines of text. Useful to language teachers to highlight corrections.",
  "icons": {
    "128": "compare128.png"
  },

  "background": {
    "scripts": [
      "popup.js"
    ]
  },

    "browser_action": {
      "default_title": "highlight your corrections",
      "default_popup": "popup.html"
    },

    "permissions": [
      "tabs",
      "activeTab",
      "http://*/*", 
      "https://*/*",
      "clipboardRead",
      "clipboardWrite",
      "contextMenus"      
    ],

popup.js
chrome.commands.onCommand.addListener(function(command) {
    console.log('Command:', command);
    getSelectedText();
});

function getSelectedText(){
    alert ("The text content of the selection:\n" + window.getSelection().toString ());
}

Я ожидаю, что это отобразит всплывающее окно с текстом, выделенным на странице.Тем не менее, результатом всегда является нулевая строка.

1 Ответ

0 голосов
/ 21 июня 2019

Для всех, кто застрял на этом:

Обязательно иметь "активную вкладку" в разрешениях.

Чтобы извлечь выделенный текст из активной вкладки:

function getSelectedText(){
    chrome.tabs.executeScript({code: 'getSelection().toString()'}, 
    res => callback(res)  //res => { alert(res[0]) });
    );
}

var blah;
function callback(results){
    console.log(results);
    blah = results[0];
}

«бла» будет содержать выделенный текст в процессе вызова, где вы можете работать с ним.

Спасибо wOxxOm за то, что указал мне правильное направление и дал мне толчок.

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