Расширение выделения для Google Chrome - PullRequest
0 голосов
/ 23 мая 2018

В настоящее время я работаю над расширением Google Chrome, для которого мне понадобится ваша помощь.Моя идея - создать подсветку, подобную селектору :: selection в CSS.Пример этого лежит здесь: https://www.w3schools.com/cssref/sel_selection.asp При выделении области текста она будет выделена другим цветом фона.Однако после того, как вы щелкнете мышью по другой области, выделенный текст вернется к своему первоначальному цвету.

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

У меня есть несколько файлов на основе учебника по расширению Google Chrome.manifest.json.Как вы можете видеть, моя идея состоит в том, чтобы использовать подсветку только на текущей вкладке (таким образом, активная вкладка в разрешениях)

{
  "name": "Highlighter",
  "version": "1.0",
  "description": "Build an Extension!",
  "permissions": ["activeTab", "declarativeContent", "storage"],
  "options_page": "options.html",
  "background": {
    "scripts": ["highlighter.js"],
    "persistent": false
  },
  "content_scripts": [
   {
     "matches": ["http://*/*"],
     "js": ["script.js"],
     "css": ["style.css"]
   }
 ]
}

Затем я создал файл options.js, из которого пользователь может выбрать, какой цвет будет выбран.выделенная область.

'use strict';

let page = document.getElementById('buttonDiv');
const kButtonColors = ['#3aa757', '#e8453c', '#f9bb2d', '#4688f1'];

function constructOptions(kButtonColors) {
  for (let item of kButtonColors) {
    let button = document.createElement('button');
    button.style.backgroundColor = item;
    button.addEventListener('click', function() {
      chrome.storage.sync.set({color: item}, function() {
        console.log('color is ' + item);
      })
    });
    document.get('buttonDiv').appendChild(button);

    //document.querySelector().appendChild(button);
  }
}
constructOptions(kButtonColors);

Кроме того, у меня есть другие необходимые файлы, такие как popup.js

'use strict';

let changeColor = document.getElementById('changeColor');

chrome.storage.sync.get('color', function(data) {
  changeColor.setAttribute('value', data.color);
});

И файл background.js:

'use strict';

chrome.runtime.onInstalled.addListener(function() {
  chrome.storage.sync.set({color: '#3aa757'}, function() {
    console.log('The color is green.');
  });
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [new chrome.declarativeContent.PageStateMatcher({
        pageUrl: {hostEquals: 'developer.chrome.com'},
      })],
      actions: [new chrome.declarativeContent.ShowPageAction()]
    }]);
  });
});

Я искреннеНадеюсь на вашу доброту и помощь, так как это стало трудно достичь результата.

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