Добавляю стили и скрипты на определенный сайт в background
.
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
console.log(tabId, changeInfo, tab);
if(changeInfo.status === 'complete' && siteUrl.test(tab.url)) {
insertCss(tab.id, '/css/bootstrap.min.css', function () {
insertCss(tab.id, '/css/jquery.toast.min.css', function () {
insertCss(tab.id, '/css/content_style.css', function () {
executeScript(tab.id, '/js/utils/jquery-3.3.1.js', function () {
executeScript(tab.id, '/js/utils/js.cookie.js', function () {
executeScript(tab.id, '/js/utils/jquery.toast.min.js', function () {
executeScript(tab.id, '/js/utils/sweetalert2.js', function () {
executeScript(tab.id, '/js/core.js', function () {
executeScript(tab.id, '/js/content_script.js', function () {
console.warn('FILES INJECTION COMPLETE');
});
});
});
});
});
});
});
});
});
}
});
Когда заходишь на страницу все нормально инжектится, но если потом обновлять страницу стили и скрипты вставляются через раз - то бишь один раз обновляем ничего нет, еще раз обновляем все появляется.
почему так?
Если писать в manifest.json
content_scripts
то тоже не всегда срабатывает. Бывает открывает страницу (не перезагружаешь) и ничего не грузится.
Полагаю все необходимые скрипты и стили грузятся локально, т.е. из дирректории расширения. В этом случае рекомендую собрать необходимые бандлы заранее и в правильном порядке, тогда у вас на выходе будет один CSS-файл и один JS.
Современные инструменты позволяют это выполнять автоматически при каждой сборке проекта.
Это уменьшит вероятность ошибки и гарантирует всегда правильный порядок.
Как верно заметил Stepan Kasyanenko, более верный способ использовать manifest.json для подобной задачи.
От себя добавлю: обратите внимание на директиву run_at
которая позволяет правильно определить время инжекта вашего кода на страницу.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь настроить webpack4 , всё работает как надо, за исключением выноса стилей из js файлабез webpack-merge работает, с webpack-merge не видит файла
На Angular2 для OIDC/OAuth2 авторизации я использую "oidc-client-js" библиотекуСтандартно, для обновления токенов используется silent-refresh
Прошу помочь решить проблемуЕсть два поля ввода, которые затем формируют список