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>これらの各属性により、ブラウザーはスクリプトの読み込みを遅らせることができ、順序は保証されなくなります。

ただし、 asyncフラグを指定せずにファイルをロードしている場合、各スクリプトは最後に挿入された<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 に答える