Задать вопрос
@Zailox

Как запустить js скрипт перед загрузкой сайта?

Пишу расширение, которое должно менять src у <script> на мой. Вот код:

const newScript = document.createElement('script');
const oldScript = document.querySelector('script[src*="/exam/js/main.module_9dae9.js"]');
newScript.src = 'http://127.0.0.1:8000/main.module_9dae9.js';
oldScript.parentNode.insertBefore(newScript, oldScript.nextSibling);
oldScript.parentNode.removeChild(oldScript);


Всё работает, но при загрузке сайта сначала выполняется старый скрипт, а уже потом мой, из-за чего все кнопки перестают работать. Как инжектить мой скрипт перед выполнением <script>`ов сайта?
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
@CuriousLynx
Судя по всему, вам сначала нужно блокировать загрузку скрипта /exam/js/main.module_9dae9.js с помощью API webRequest
https://developer.chrome.com/docs/extensions/refer...
а затем уже добавлять на страницу скрипт 127.0.0.1:8000/main.module_9dae9.js
Ответ написан
Комментировать
@Zailox Автор вопроса
Решение на основе ответа CuriousLynx:

manifest.json:

{
...
  "background": {
    "scripts": ["background.js"],
    "persistent": true  //Блок запросов через background.json
...
  "permissions": [
        "tabs",
        "storage",
        "webRequest",
        "webRequestBlocking",
        "<all_urls>" //Все 3 последних разрешения для блока
    ]
}

background.js:

chrome.webRequest.onBeforeRequest.addListener(
  function(details) { return {cancel: true}; },
  {urls: ["*://domen.saita/exam/js/main.module_9dae9.js"]},
  ["blocking"]
);


А дальше через content.js замена src на свой.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы