Как настроить таргетинг и заменить тег скрипта без идентификатора или класса

#javascript

#javascript

Вопрос:

У меня есть код чего-то вроде этого:

  line 041: <script src='http://blabla041' type='text/javascript'></script>
 line 052: <script src='http://blabla052' type='text/javascript'></script>
 line 063: <script src='http://blabla053' type='text/javascript'></script>
 ...
 line 499: <script src='http://specificaddress' type='text/javascript'></script>
 ...
 line 997: <script src='http://blabla097' type='text/javascript'></script>
 line 998: <script src='http://blabla098' type='text/javascript'></script>
 line 999: <script src='http://blabla099' type='text/javascript'></script>
  

И я могу редактировать это только с помощью классического JavaScript.

И вопрос в том, как я могу настроить таргетинг на этот тег скрипта с помощью src of http://specificaddress , чтобы полностью удалить его?

Комментарии:

1. Просмотрите элементы скрипта и посмотрите, что содержит их атрибут src …? Однако имейте в виду, что удаление существующего элемента скрипта не приведет к «обратному» выполнению кода, который уже был выполнен на этом этапе.

Ответ №1:

Например, на 098

 let element = document.querySelector("script[src='http://blabla098']");
element.parentNode.removeChild(element);
  

Комментарии:

1. Спасибо, я попробовал это точно так, как вы сказали, и попытался установить также тайм-аут на 3 секунды, чтобы убедиться, что он выполняется после, но это не удалило его.

2. Как вы можете видеть на моем скриншоте моего codepen, вы можете видеть, что после «строки 998» нет скрипта … puu.sh/rOyA0/318561fc26.png Это созданный мной codepen: codepen.io/InstaK/pen/wzQJbO

Ответ №2:

это одно из существующих решений

     function scriptElement(param){
    var sc = document.scripts;
    for(var i=0;i<sc.length;i  ){
      if(sc[i].src == param || sc[i].id == param){
        document.scripts[i].index = i;
        return document.scripts[i];
      }
     if(sc[i].className == param){
      return document.scripts;
       }

    }
    }
    scriptElement("http://blabla041").index;//return index => 0
    scriptElement("http://blabla041").src; // return http://blabla041
    scriptElement("http://blabla041").className; //return class attribute
    scriptElement("http://blabla041").id; // return id;
    scriptElement("scriptid").src;//also className,id
    scriptElement("classname")[0].index;//also src,className,id

    //to replace src
    scriptElement("http://blabla041").src = "http://newsrc.url";
    //to remove script
    scriptElement("http://blabla041").parentNode.removeChild(scriptElement("http://blabla041"));
  

Ответ №3:

Наконец-то я выяснил, что было не так в моем коде.

Важно: вы должны ввести полный путь для указанного скрипта.

 var script = document.getElementsByTagName('script');

for (var i = 0; i < script.length; i  ) {
  if (script[i].src == 'file:///C:/Users/username/Desktop/test.js') {
    script[i].src = 'nothingHere';
    console.log(script[i]);
  }
}  
 <script src='file:///C:/Users/username/Desktop/test.js' type='text/javascript'></script>
<script src='js/adawdaw.js' type='text/javascript'></script>
<script src="js/scripts.js"></script>  

Комментарии:

1. Спасибо, но что-то не работает… Я попробовал точно так, как вы опубликовали, а также попытался заменить «specifiedadress» на полный URL, подобный этому » specificaddress «, но это не помогло. Это не удалило его