首页 >web前端 >js教程 >如何查找加载当前脚本的脚本标签?

如何查找加载当前脚本的脚本标签?

Patricia Arquette
Patricia Arquette原创
2024-12-17 01:10:26424浏览

How to Find the Script Tag That Loaded the Current Script?

如何引用加载脚本标签

在各种场景下,都需要引用加载当前正在执行的脚本标签脚本。这可以通过多种方法来实现,每种方法都有自己的优点和缺点。

1. document.currentScript

<script><br>var me = document.currentScript;<br></script><br>

优点:

  • 简单明确。
  • 可靠。
  • 适用于异步
  • 无需修改脚本标签。

    问题:

    • 旧版浏览器和 IE 不支持。
    • 不适用于模块(<脚本类型=“模块”>)。

      2.脚本 ID

      <script>var me = document.getElementById('myscript');<br></script><br>

      优点:

      • 显式和可靠。
      • 广泛支持。
      • 适用于异步脚本。

        问题:

        • 需要自定义属性。
        • Id 属性可能会导致特定的问题浏览器。

          3.数据属性

          <script data-name="myscript"><br>var me = document.querySelector('script[data-name="myscript"]');<br></script><br>

          好处:

          • 与之前的选项类似。
          • 支持异步脚本。

          问题:

          • 需要自定义属性。
          • 并非所有浏览器都兼容 HTML5。
          • 与其他共享相同元素的潜在冲突属性。

          4.脚本源

      <script src="//example.com/embed.js"></script><br>

      var me = document.querySelector('script[src="//example.com/embed.js"]');<br>

      好处:

      • 没有自定义属性。
      • 适用于异步脚本。

      问题:

      • 不适用于本地脚本。
      • 不同环境中的问题(例如,开发)和生产)。
      • 脆弱(更改脚本位置需要脚本修改)。

      5.循环脚本

      <script><br>var me = null;<br>var script = document.getElementsByTagName("script")<br>for (var i = 0; 脚本.长度; {</p>
      <pre class="brush:php;toolbar:false">if( isMe(scripts[i])){
        me = scripts[i];
      }

      }

      function isMe(scriptElem){<pre class="brush:php;toolbar:false">if( isMe(scripts[i])){
        me = scripts[i];
      }

      }

      好处:

      • 灵活,可以使用以前的

      问题:

      • 效率低下。

      6.最后执行的脚本