Есть ли способ изменить атрибут src или href элемента (до его загрузки) с помощью JS / jQuery? - PullRequest
0 голосов
/ 31 октября 2019

Немного предыстории:

На работе я использую онлайн-систему, специально разработанную для моей компании. У него есть несколько модулей и множество недостатков, и мы не получаем никакой реакции от команды разработчиков относительно технических трудностей (владелец компании, которая разработала и поддерживает систему, имеет связи с моими боссами в семье и дружбе, поэтому наши жалобы немного чего делать).

Вот моя текущая проблема:

Один из модулей имеет некоторые теги <link> и <script>, которые были запрограммированы неправильно. Вот фрагмент кода:

<head>
    <title>pag_central</title>

    <script src="//js/jquery-1.6.4.min.js"></script> 
    <link rel="stylesheet" media="all" type="text/css" **href="//css/examples.css"** /> 

    <link rel="icon" **href="//images/favicon.ico"** type="image/x-icon">
    <link rel="shortcut icon" **href="/i/favicon.ico"** type="image/x-icon">

    <!-- link rel="stylesheet" type="text/css" **href="//css/apexSiop.css"** -->
    <script src="//js/boxover.js" type="text/javascript"></script>
    <link rel="stylesheet" href="//css/estilos.css" type="text/css" />

    <link rel="stylesheet" href="/i/css/apex.min.css?v=4.2.5.00.08" type="text/css" />
    ...
</head>

Есть некоторые src и href, которые браузер не может найти из-за двойной косой черты.

Я хочу создатьрасширение для моего браузера, которое изменяет атрибут на тех неправильных элементах, чтобы они загружали нужные файлы.

Я попытался с расширением, но не смог сделать это (он загружается, затем позже изменяет атрибуты без загрузки правильного адреса).

Есть ли способ сделать это для меня?

В Chrome было несколько таких ошибок (Firefox занимает более 2000 мс, прежде чем отказаться от ресурса):

Не удалось загрузить ресурс: net :: ERR_NAME_NOT_RESOLVED boxover.js: 1

То, что мне удалось встроить (в надстройку) с использованием приведенной ниже информации, было:

var children = document.getElementsByTagName("head")[0].children;
for (var i = 0; i < children.length; i++) {
  var tableChild = children[i];
  if(tableChild.hasAttribute("src")){
    tableChild.src.replace("https://","example.com/");
  }
  if(tableChild.hasAttribute("href")){
    tableChild.href.replace("https://","https://example.com/");
  }
}

Это работало до определенного момента, но на самом деле не делало то, что мне нужно.

Вы можете помочь?

...