Я хочу создать расширение Chrome, которое автоматизирует Ctrl + F с помощью слов / хранится в инструменте для всех посещаемых мной веб-сайтов. - PullRequest
1 голос
/ 26 сентября 2019

У меня есть требование выделять определенные слова на любых сайтах, которые я посещаю.Так что мне не нужно использовать control + f вручную и найти слово на веб-странице.

Я видел какой-то плагин Chrome (выделите это: находит и помечает слова), но он встречается не на всех веб-сайтах, может быть, только для веб-сайта, который позволяет отказаться.У меня есть несколько внутренних веб-сайтов, где мне нужно каждый раз нажимать Ctrl + F для одного и того же набора слов.

Именно этот плагин соответствует моим требованиям, но он не работает на внутренних или запрещенных веб-сайтах.Я знаю, как создать расширение, но не уверен, какая логика или фрагмент кода будет выполнять эту работу.

Когда я посещаю веб-сайт или любой URL-адрес, слова, хранящиеся в плагине, должны выделяться, поскольку он выделяется с помощью ctrl +.е.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Я бы использовал chrome.storage.sync.set API chrome.storage.api .Вы можете установить текст для поиска и сохранить его в переменной, а затем каждый раз, когда вы используете расширение, вы можете ссылаться на эту переменную.Без какого-либо кода я ухожу из собственного опыта.Поэтому я привожу немного своего примера, чтобы показать вам, как я использовал API chrome.storage, так что, возможно, вы также найдете его полезным.

Вот фрагмент моего кода, это хромрасширение, которое добавляет URL-адрес в локальное хранилище, поэтому при входе в брандмауэр мне не нужно постоянно копировать строку / текст, который я хочу ввести.

function cfs_add(){
var url = prompt('Please provide url', 'test.com');
chrome.storage.sync.set({'name': url}, function() {
  console.log("saved url!!" );
});
};
cfs_add()

...

chrome.storage.sync.get(['name'], function(results) {
  if(results.variable_name == undefined) {
  }
  document.getElementById('state').innerHTML = "Current URL: " + String(results['name'])
  document.getElementById('state').style.color = "lightblue"

})

Создать функцию, которая автоматически ищет и выделяет слова, хранящиеся в локальном хранилище / chrome.storage.

0 голосов
/ 26 сентября 2019

Вот начало.Не полностью протестирован.

  let searchTerms = ['law', 'software', 'news', 'health'];

  let elems = document.querySelectorAll("h1, h2, h3, h4, h5, h6, p, a")
  for (let i = 0, total = elems.length; i < total; i++) {
    let element = elems[i];
    if (element && element.innerText) {
      let innerText = element.innerText;
      for (let j = 0; j < searchTerms.length; j++) {
        const reg = new RegExp(searchTerms[j], 'gi')
        const matches = innerText.toLowerCase().match(reg) || []
        if (matches.length) {
          for (let n = 0; n < matches.length; n++) {
            element.innerHTML = innerText.replace(reg, '<span style="color:red">' + searchTerms[j] + '</span>');
          }
        }
      }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...