background.js
Кто знает, почему когда я использую в background.js onUpdated алерт срабатывает по несколько раз. Минимум 4, а иногда и больше.
chrome.tabs.onUpdated.addListener(function() { alert("123"); }); И второй вопрос. Почему из background.js я не могу дотянуться до вкладки? Например я использую text = document.querySelector('#text'), он он всегда пустой. Как используя расширение изменять что-то во вкладке? Заранее спасибо. |
Цитата:
|
Цитата:
А какая у тебя задача? Если надо на неком сайте у себя в браузере что-то делать, то, может, tampermonkey проще взять? Или нужно именно расширение, с некой логикой в бэкграунде? |
На моей странице html
<!DOCTYPE html> <html> <body> <div id="text">123</div> </body> </html> А в background.js у меня по идее написано, что когда страница загрузиться, добавить в text мой div и изменись содержимое по клику. chrome.tabs.onUpdated.addListener(function() { var text = document.querySelector('#text'); text.onclick = function(){ text.innerHTML = "133"; }; }); Но расширение сразу выдает ошибку ![]() Т.е. оно врезается в то, что querySelector не достучался до html. И я не знаю как это исправить... Есть ли какие-то способы как из расширения влиять на содержимое страницы? |
Если надо чтобы действие происходило 1 раз, можно воспользоваться стандартным костылём
chrome.tabs.onUpdated.addListener( (function(first){ return function() { if(first)alert("123"); first = false; } })(true) ); |
SV0L0CH,
В моем случае это уже не костыль, а инвалидное кресло. :lol: Этот код срабатывает только при старте браузера на первой странице. На любой другой он уже не работает. А я хочу чтобы код срабатывал на каждой новый вкладке, но только 1 раз. |
Всем спасибо! Я разобрался сам. Тему можно закрывать.
|
Часовой пояс GMT +3, время: 01:10. |