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, время: 13:44. |