如何让外部JavaScript获取自身的引入URL?
获取当前外部JS文件的引入URL
当然可以实现这样的getMySrc()函数,下面是具体实现和说明:
实现代码
function getMySrc() { // 优先使用标准API获取当前执行的script元素 if (document.currentScript) { return document.currentScript.src; } // 兼容不支持currentScript的旧环境(如IE) const scripts = document.getElementsByTagName('script'); return scripts[scripts.length - 1].src; }
原理说明
- 现代浏览器方案:
document.currentScript是浏览器原生提供的API,它会直接指向当前正在执行的<script>元素,直接读取其src属性就能得到引入当前JS文件的URL,这是最可靠的方式,支持Chrome、Firefox、Edge等主流现代浏览器。 - 旧环境兼容方案:对于IE这类不支持
document.currentScript的环境,由于同步加载的脚本是按DOM解析顺序执行的,当脚本运行时,它是当前DOM中已解析完成的最后一个<script>标签,因此可以通过获取所有<script>元素并取最后一个的src属性来实现。 - 注意事项:如果脚本是通过
async或defer属性异步引入的,兼容方案可能失效,但document.currentScript依然能正常工作(只要浏览器支持该API)。
内容的提问来源于stack exchange,提问作者Danger
相关产品推荐
相关产品推荐

