как узнать this тега script?

<script>
  console.log(this.remove())
<script>

как я могу удалить этот скрипт если у него нету айди и классов ?


Ответы (1 шт):

Автор решения: OPTIMUS PRIME

document.currentScript

<script data-test="1"> console.log( document.currentScript ); </script>
<script data-test="2"> console.log( document.currentScript ); </script>

<script> document.currentScript.remove(); console.log("Однако выполняется"); </script>

<script>
  // Поэтому, если хочется остановить скрипт, стоит завернуть его в общую функцию:

  __main__();
  function __main__() {
    //...
    if( "ТРЕВОГА!" ) {
      console.log("Fatal Error!");
      return;
    }

    console.log("Дальше код не выполнится...");
  }
</script>

Касаемо this... он и не должен указывать на текущий скрипт. this - это контекст вызова функций. А код во всех тегах script вызывается в контексте window.

P.s. currentScript указывает на тот тег, который сейчас выполняет код. Поэтому, если один скрипт объявляет функцию, другой вызывает её, а нужно достать тот тег, где функция была объявлена, можно добавить ей свойство:

<script id="demo-1">
  test.homeScript = document.currentScript;
  // Неизменно прилипает к функции, когда выполняется вот этот скрипт.
  
  function test() {
    console.log( "Тот скрипт, где вызвали функцию: " + document.currentScript.id );
    // Меняется в зависимости от места вызова.
  }
</script>

<script id="demo-2">
  test();
  console.log( "Скрипт, в котором объявлена функция: " + test.homeScript.id );
</script>

→ Ссылка