2012-10-18 36 views
0

可能重复:
How may I reference the script tag that loaded the currently-executing script?
Can you select the script element that included the JavaScript?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> 
+0

不,这是不可能的,尽管您可以使用document.write在脚本内创建一个脚本后面的元素,只要脚本在初始页面呈现期间运行即可。 –

+1

*为什么*你需要这样做?也许有一种更直接的方式来实现你的目标。 – hugomg

+0

@missingno,这是那些只是很好的功能之一。插件配置可以移动到包含脚本上的属性。 – zzzzBov

回答

5

只要它保证了脚本文件越来越加载顺序(这意味着, asyncronously),您可以拨打下面的代码每个javascript文件:

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

alert(lastTag.id); 

然而,这种概念尽快分解为有那些<script>元件内的asyncdefer属性。这些属性中的每一个都允许浏览器延迟加载脚本,并且不再保证订单。

但如果你加载你的文件没有任何异步标志,因为每个脚本访问的最后插入<script>节点,它必须是它从加载的一个,这将工作得很好。

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> 

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

相关问题