Привет!
Пытаюсь написать своё первое расширение для Firefox и упираюсь в непонятное.
Итак, текст скрипта test.js имеет вид:
start = function() {
console.log('Testing...');
var elem = document.querySelector('div.info');
elem.innerHTML = 'Testing: ' + elem.innerHTML;
}
start();
Соотвествующий файл manifest.json:
{
"manifest_version": 2,
"name": "Test",
"version": "1.0",
"description": "Testing",
"permissions": [
"*://pastvu.com/*"
],
"content_scripts": [
{
"matches": ["*://pastvu.com/p/*"],
"js": ["test.js"]
}
]
}
Я открываю страницу на сайте - скажем,
https://pastvu.com/p/965925 - и, используя about
:debugging#/runtime/this-firefox, временно загружаю расширение. Название фото меняется на "Testing: Памятник Петру I" - пока всё правильно. Но при перезагрузке страницы, а также при переходе на любое другое фото, название уже не меняется (хотя скрипт отрабатывает, что видно по выводу "Testing..." в консоли). После перезагрузки скрипта всё срабатывает, но тоже только один раз. Если я последнюю строчку скрипта заменяю на
window.setTimeout(start, 500);
то после перезагрузки страницы скрипт отрабатывает (но при переходе на новую страницу - нет), из чего я делаю вывод, что в первой версии он срабатывал до полного построения страницы.
Вопрос - почему? Ведь скрипты расширения, вроде бы, должны отрабатывать только когда страница уже построена. И как сделать, чтобы всё работало без таймаутов и на всех страницах?
Явное задание в свойствах скрипта
"run_at": "document_idle"
не помогает. Пытался экспериментировать с windows.onLoad, но изменений не увидел.
Помогите, кто в теме.
Владимир.