Добрый день, я новичек в JS)
Пишу плагин для хрома, его задача поиск текста на странице.
Т.е. пользователь вводит в текстовое поле слово, жмет на кнопку и нужное подсвечивается. Если делать не как плашин а просто в html то проблем нет, но вот с плагином столкнулся с проблемой:
Поскольку в плагинах инлайн скрипты запрещены, то повесить обработчик на кнопку в popup.html нельзя, следовательно попытался прикрутить динамиеский обработчик, но что-то не вышло.
Что имею:
popup.html
> <input type="text" id="text-to-find" placeholder="поиск"> <input
> type="button" value="найти" id="btn-text-to-find" />
скрипт поиска (s.js):
<script type="text/javascript">
var lastResFind=""; // последний удачный результат
var copy_page=""; // копия страницы в ихсодном виде
document.getElementById('btn-text-to-find').addEventListener('click',FindOnPage('text-to-find'));
function TrimStr(s) {
s = s.replace( /^\s+/g, '');
return s.replace( /\s+$/g, '');
}
function FindOnPage(inputId) {//ищет текст на странице, в параметр передается ID поля для ввода
var obj = document.getElementById('btn-text-to-find').addEventListener('click',FindOnPage('text-to-find'))
var textToFind;
if (obj)
{
textToFind = TrimStr(obj.value);//обрезаем пробелы
}
скрипт лежит в отдельном файле, который вызывается фоновым обработчиком:
popup.js
document.addEventListener("DOMContentLoaded",function (){
chrome.tabs.executeScript( {"file": "s.js"});
});
Все это обернуто в DOMContentLoaded, значит весь DOM уже построен (я ан это надеюсь)
popup.js вызывается из
popup.html:
<head>
<script src="popup.js"></script>
<script src="jquery.js"></script>
</head>
Обычная структура плагина:
popup.html->popup.js->s.js
при запуске, консоль ругается на строчки:
Код:
|
Uncaught ReferenceError: TrimStr is not defined
at FindOnPage (index.html:79)
at index.html:58
at dispatch (jquery.js:3)
at i (jquery.js:3) |
Код:
|
textToFind = TrimStr(obj.value);//обрезаем пробелы- Uncaught ReferenceError: TrimStr is not defined
document.getElementById('btn-text-to-find').addEventListener('click',FindOnPage('text-to-find')); |
подскажите плс как заставить эту адскую машину работать, а то я совсем запутался.
Если без динамического обработчика т.е. повесить на инпут обычный обработчик:
<input type="button" value="найти" onclick="FindOnPage('text-to-find'); return false; "/>
то все работает
но так инлайново для плагина нельзя по политике хрома