document.currentScript 为空

新手上路,请多包涵

浏览器是Chrome, document.currentScript 应该支持但是

index.html

 <link href="css/main.css" rel="stylesheet" />
<script src="1.js"></script>
<style>

1.js

 setInterval(function() {
  var fullUrl = document.currentScript.src;
  console.log(fullUrl)
},2000)

 Error :
1.js:4 Uncaught TypeError: Cannot read property 'src' of null

原文由 zloctb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

document.currentScript返回当前正在处理的脚本。在回调和事件期间,脚本已完成处理并且 document.currentScript 将为 null 。这是有意为之的,因为如果从 DOM 中删除脚本并删除所有其他引用,则保持引用处于活动状态将防止脚本被垃圾回收。

如果您需要在任何回调之外保留对脚本的引用,您可以:

 var thisScript = document.currentScript;

setInterval(() => console.log(thisScript.src), 2000);

原文由 Andy E 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以将 document.currentScript 的引用保留在回调之外

var currentScript = document.currentScript;

setInterval(function(){
    var fullUrl = currentScript.src;
    console.log(fullUrl)
},2000);

原文由 Olivier Boissé 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏