0

可能重复:
如何引用加载当前执行脚本的脚本标签?
您可以选择包含 JavaScript 的脚本元素吗?

有什么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>
4

2 回答 2

5

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

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

alert( lastTag.id );

但是,一旦这些元素中有asyncordefer属性,这个概念就会中断。<script>这些属性中的每一个都允许浏览器延迟脚本的加载,并且不再保证顺序。

但是,如果您在没有任何异步标志的情况下加载文件,这将正常工作,因为每个脚本都访问最后插入的<script>节点,该节点必须是从中加载的节点。

于 2012-10-18T15:36:28.387 回答
0
<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>

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

于 2012-10-18T15:38:04.570 回答