如何引用加载当前正在执行的脚本的脚本元素
理解问题
在某些场景下,开发者可能需要动态加载额外的脚本脚本到文档中。然而,如果 HEAD 元素尚未完全渲染,传统的使用 document.getElementsByTagName('head')[0].appendChild(v) 的方法可能不适合。
解决方案:引用当前脚本
要引用加载当前正在执行的脚本的脚本元素,可以采用多种技术:
1. document.currentScript
优点:
- 简单、明确、可靠
- 不需要修改脚本标签
- 使用异步脚本(defer &异步)
- 适用于动态插入的脚本
限制:
- 旧版浏览器或 IE 不支持
- 不适用于模块()
<br><script><br>var me = document.currentScript;<br></script><br>< ;/pre><h4 id="脚本标签-ID">2.脚本标签 ID</h4><p><strong>优点:</strong></p>
- 简单、明确且可靠
- 广泛支持
- 适用于异步脚本(延迟和异步)
- 使用插入的脚本动态
限制:
- 需要向脚本标签添加 id 属性
<br>var me = document.getElementById('myscript');<br><br>
3.数据属性选择
优点:
- 简单明确
- 使用异步脚本(defer & async)
- 与插入的脚本一起使用动态
限制:
- 需要向脚本标签添加自定义 data-* 属性
- 不如使用ID
- 可能会导致与共享相同数据的其他元素混淆属性
<br><script data-name="myscript"><br>var me = document.querySelector('script[data-name="myscript"] ');<br></script><br>
4.源选择
优点:
- 可靠
- 使用异步脚本(延迟和异步)
- 使用脚本动态插入
- 没有自定义属性或ID必填
限制:
- 不适用于本地脚本
- 在不同环境中导致问题(例如,开发与生产)
- 静态且脆弱(更改脚本位置需要修改)
- 不如使用 ID 得到广泛支持
- 如果使用相同的脚本,则会出现问题加载多次
<br><script src="//example.com/embed.js"></script><br>
var me = document.querySelector('script[src="//example.com/embed.js"]');
5.脚本迭代
优点:
- 继承了之前技术的优点
- 不依赖于querySelector(),所以它可以在较旧的版本中工作浏览器
限制:
- 更复杂且计算成本更高
<br><br>var me = null;<br>var script = document.getElementsByTagName("script")<br>for (var i = 0; i <scripts.length i> if (isMe(scripts[i])) {<pre class="brush:php;toolbar:false">me = scripts[i];
}
}
6.最后执行的脚本
优点:
- 简单
- 几乎普遍支持
- 没有自定义属性或ID必需
限制:
- 不适用于异步脚本(延迟和异步)
- 不适用于插入的脚本动态
<br><script><br>var script = document.getElementsByTagName( 'script' );<br>var me = script[scripts.length - 1 ];<br></script><br>
结论
引用当前脚本元素的方法的选择取决于应用程序的具体要求和支持各种浏览器。对于现代浏览器,document.currentScript 是首选方法。
以上是如何查找加载当前正在执行的 JavaScript 的脚本元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

本文系列在2017年中期进行了最新信息和新示例。 在此JSON示例中,我们将研究如何使用JSON格式将简单值存储在文件中。 使用键值对符号,我们可以存储任何类型的

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

核心要点 JavaScript 中的 this 通常指代“拥有”该方法的对象,但具体取决于函数的调用方式。 没有当前对象时,this 指代全局对象。在 Web 浏览器中,它由 window 表示。 调用函数时,this 保持全局对象;但调用对象构造函数或其任何方法时,this 指代对象的实例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。这些方法使用给定的 this 值和参数调用函数。 JavaScript 是一门优秀的编程语言。几年前,这句话可

jQuery是一个很棒的JavaScript框架。但是,与任何图书馆一样,有时有必要在引擎盖下发现发生了什么。也许是因为您正在追踪一个错误,或者只是对jQuery如何实现特定UI感到好奇

该帖子编写了有用的作弊表,参考指南,快速食谱以及用于Android,BlackBerry和iPhone应用程序开发的代码片段。 没有开发人员应该没有他们! 触摸手势参考指南(PDF) Desig的宝贵资源


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)