Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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是否可以引用创建它的脚本元素?_Javascript_Jquery_Html - Fatal编程技术网

javascript是否可以引用创建它的脚本元素?

javascript是否可以引用创建它的脚本元素?,javascript,jquery,html,Javascript,Jquery,Html,可能重复: 是否有任何identifyScript可以实现此功能?jQuery也很酷 <script type="text/javascript" id="script1"> function identifyScript(){...} </script> <script type="text/javascript" id="script1"> identifyScript(); //This function would alert "s

可能重复:

是否有任何
identifyScript
可以实现此功能?jQuery也很酷

<script type="text/javascript" id="script1">
    function identifyScript(){...}
</script>
<script type="text/javascript" id="script1">
    identifyScript(); //This function would alert "script1"
</script>
<script type="text/javascript" id="script2">
    identifyScript(); //This function would alert "script2"
</script>

函数identifyScript(){…}
identifyScript()//此函数将向“script1”发出警报
identifyScript()//此函数将向“script2”发出警报

只要保证脚本文件按顺序加载(即不是异步加载),就可以在每个javascript文件中调用以下代码:

var scripts        = document.getElementsByTagName( 'script' ),
    lastTag        = scripts[ scripts.length - 1 ];

alert( lastTag.id );
但是,只要这些
元素中有
async
defer
属性,这个概念就会打破。这些属性中的每一个都允许浏览器延迟加载脚本,并且不再保证顺序


但是,如果加载文件时没有任何异步标志,这将正常工作,因为每个脚本访问最后插入的
节点,该节点必须是它加载的节点。

只要保证脚本文件按顺序加载(这意味着不是异步加载),您可以在每个javascript文件中调用以下代码:

var scripts        = document.getElementsByTagName( 'script' ),
    lastTag        = scripts[ scripts.length - 1 ];

alert( lastTag.id );
<script type="text/javascript">
    function identifyScript() {
        scripts = document.getElementsByTagName("script");
        alert(scripts[scripts.length - 1].id);
    }
</script>
<script type="text/javascript" id="script1">
    identifyScript(); //This function would alert "script1"
</script>
<script type="text/javascript" id="script2">
    identifyScript(); //This function would alert "script2"
</script>
但是,只要这些
元素中有
async
defer
属性,这个概念就会打破。这些属性中的每一个都允许浏览器延迟加载脚本,并且不再保证顺序

但是,如果加载文件时没有任何异步标志,这将正常工作,因为每个脚本都访问最后插入的
节点,该节点必须是加载它的节点。


<script type="text/javascript">
    function identifyScript() {
        scripts = document.getElementsByTagName("script");
        alert(scripts[scripts.length - 1].id);
    }
</script>
<script type="text/javascript" id="script1">
    identifyScript(); //This function would alert "script1"
</script>
<script type="text/javascript" id="script2">
    identifyScript(); //This function would alert "script2"
</script>
函数identifyScript(){ scripts=document.getElementsByTagName(“脚本”); 警报(脚本[scripts.length-1].id); } identifyScript()//此函数将向“script1”发出警报 identifyScript()//此函数将向“script2”发出警报
这是因为当它在每个块中运行时,该块是最后一个存在的块,集合中的最后一个也是。


函数identifyScript(){
scripts=document.getElementsByTagName(“脚本”);
警报(脚本[scripts.length-1].id);
}
identifyScript()//此函数将向“script1”发出警报
identifyScript()//此函数将向“script2”发出警报

这是因为当它在每个块中运行时,该块是最后一个存在的块,集合中的最后一个也是如此。

不,这是不可能直接实现的,尽管您可以使用document.write在脚本之后创建一个元素,您可以从脚本中以该元素为目标,只要它在初始页面呈现期间运行。为什么需要这样做?也许有一种更直接的方式来实现你的目标。@missing不,这是其中一种很好的功能。插件配置可以移动到包含脚本上的属性。@zzzzBov头上的钉子。使用
@zzzzBov将一些代码交给客户是很容易的,是的,这是一个副本。如何关闭?不,这不可能直接关闭,但您可以使用document.write在脚本之后创建一个元素,只要在初始页面呈现期间运行该元素,就可以从脚本中以该元素为目标。为什么需要这样做?也许有一种更直接的方式来实现你的目标。@missing不,这是其中一种很好的功能。插件配置可以移动到包含脚本上的属性。@zzzzBov头上的钉子。使用
@zzzzBov将一些代码交给客户是很容易的,是的,这是一个副本。我怎么关门?