C
C
Cyril2017-05-11 13:23:05
JavaScript
Cyril, 2017-05-11 13:23:05

How to implement text search plugin on page for chrome?

Good afternoon, I am writing a plugin for searching text on a page for chrome, but the problem is that I use inline scripts:

<input type="text" id="text-to-find" placeholder="поиск"> 
<input type="button"  value="найти" onclick="FindOnPage('text-to-find'); return false; "/>


accordingly, chrome swears at inline scripts: it does not allow me to do this for reasons of security policy. tell me how to make the text search plugin on the page the script itself in the easiest and least cumbersome way
onclick="FindOnPage('text-to-find'); return false;



var lastResFind=""; // последний удачный результат
var copy_page=""; // копия страницы в ихсодном виде
function TrimStr(s) {
     s = s.replace( /^\s+/g, '');
  return s.replace( /\s+$/g, '');
}
function FindOnPage(inputId) {//ищет текст на странице, в параметр передается ID поля для ввода
  var obj = window.document.getElementById(inputId);
  var textToFind;

  if (obj) {
    textToFind = TrimStr(obj.value);//обрезаем пробелы
  } else {
    alert("Введенная фраза не найдена");
    return;
  }
  if (textToFind == "") {
    alert("Вы ничего не ввели");
    return;
  }

  if(document.body.innerHTML.indexOf(textToFind)=="-1")
  alert("Ничего не найдено, проверьте правильность ввода!");

  if(copy_page.length>0)
        document.body.innerHTML=copy_page;
  else copy_page=document.body.innerHTML;


  document.body.innerHTML = document.body.innerHTML.replace(eval("/name="+lastResFind+"/gi")," ");//стираем предыдущие якори для скрола
  document.body.innerHTML = document.body.innerHTML.replace(eval("/"+textToFind+"/gi"),"<a name="+textToFind+" style='background:red'>"+textToFind+"</a>"); //Заменяем найденный текст ссылками с якорем;
  lastResFind=textToFind; // сохраняем фразу для поиска, чтобы в дальнейшем по ней стереть все ссылки
  window.location = '#'+textToFind;//перемещаем скрол к последнему найденному совпадению


the bottom line is that I need to implement some kind of image for the plugin, text search on the page, inline scripts and function calls from html cannot be done with the chrome policy onclick="FindOnPage('text-to-find'); return false;

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question