Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.currentScript为空_Javascript - Fatal编程技术网

Javascript document.currentScript为空

Javascript document.currentScript为空,javascript,Javascript,浏览器为Chrome,文档。应支持currentScript,但 index.html <link href="css/main.css" rel="stylesheet" /> <script src="1.js"></script> <style> 你没有读过,上面写着: 需要注意的是,如果脚本中的代码被调用为回调或事件处理程序,那么它将不会引用元素;它将仅在元素最初被处理时引用该元素 document.currentScript仅限。在回调

浏览器为Chrome,
文档。应支持currentScript
,但

index.html

<link href="css/main.css" rel="stylesheet" />
<script src="1.js"></script>
<style>
你没有读过,上面写着:

需要注意的是,如果脚本中的代码被调用为回调或事件处理程序,那么它将不会引用
元素;它将仅在元素最初被处理时引用该元素


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

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

var thisScript = document.currentScript;

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

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

var currentScript = document.currentScript;

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

document.currentScript
如果像这样将脚本作为模块加载,它也将为空

<script type="module" src="foo/bar.js"></script>


对于模块,文档说应该使用
import.meta.url

@Brian:再看一次。只需确保在闭包中隔离
thisScript
。如果您要的是
src
值,那么为什么不保存该值,而不是从DOM中保存整个脚本对象<代码>var thisScriptSrc=document.currentScript&&document.currentScript.src
var currentScript = document.currentScript;

setInterval(function(){
    var fullUrl = currentScript.src;
    console.log(fullUrl)
},2000);
<script type="module" src="foo/bar.js"></script>