Ни разу не писал расширение для Хрома. Почитал немного материалы от Гугла. Не сильно помогло, тем более плохо знаю JS.
В общем, что мне нужно. А нужно простое пока действие: открываю сайт, логинюсь, нажимаю на кнопку расширение, активирую его. Расширение периодически по таймеру на этом сайте кликает на Таб в виджете, к которому привязано событие "click", которое дергает ajax запрос и получает данные с сервера и обновляет содержимое Таба. После чего, расширение должно проверить, появилось ли что-то в Табе. Таб - это вкладка в виджете. Если что-то появилось - дергает внешний url.
Как это правильно организовать? Что прописать в манифесте? Как достучаться из расширения к DOM сайта?
В принципе, через devtools кликнутьпо табу могу через: document.getElementsByClassName('tab')[0].click(), как это периодически дергать из расширения?
Ответ
Чтобы достучатся из расширения к DOM сайта, вам нужен контент скрипт (вся работа с DOM ведется там). В манифесте указываете, в какие страницы его загружать, примерно так:
manifest.json:
{
/*
тут бла-бла-бла имя автора версия и прочие тырыпыры,
https://developer.chrome.com/extensions/manifest тут все достаточно подробно описано
*/
"permissions":
[
"http://ваш.сайт.цель/*"
],
"content_scripts":[
{
"matches": [
"http://ваш.сайт.цель/*" //https://developer.chrome.com/extensions/content_scripts#match-patterns-globs
],
"js": ["content_script.js"]
}
]
}
Чтобы активировать расширение, нажав на кнопку расширение, вам нужен popup:
в манифест добавляем
"browser_action":{
"default_popup":"popup.html"
},
в теле popup.html напишите код, который будет сохранять куда-либо факт того, что приложение активировано. Тут масса вариантов, насколько я понял вашу задачу, будет достаточно просто посылать сообщение в content_script, примерно так:
popup.html:
popup.js
chrome.runtime.sendMessage('start');
content_script.js:
chrome.runtime.onMessage.addListener(function(request,sender,callback){ if(request=='start'){ setInterval(function(){ document.getElementsByClassName('tab')[0].click() },228); } });
Но вы можете сделать это массой других способов, например воспользовавшись chrome.storage.local или background скриптом, который будет работать, пока вы не закроете браузер, удалите или не отключите расширение.
Комментариев нет:
Отправить комментарий