document.scriptsと自分自身が属するscript要素を取得

IE(確か5からある気がす)とOpera(8で確認)は document.scripts というものがあります。これってdocument.getElementsByTagName('script')で取得できる奴と同等(まったく同じではない)です。まぁfxにはないけど…(fxでも対応させられるけど…)

<html>
<head>
<script id="foo">
alert(document.scripts.length); // 1
alert(document.scripts[0].id); // foo
</script>
<script id="bar">
alert(document.scripts.length); // 2
alert(document.scripts[1].id); // bar
</script>
</html>

これを利用すると

document.scriptsを利用して自分自身が属するscript要素を取得ができる。元ネタのid:amachangさんのIT戦記から少し引用。

DOM は構築されるときに、上から順番に構築される。そして、script タグがあると、 script 要素を構築したあとに、スクリプトを実行する。(とてもシンプルに自分自身が属する script 要素を取得 - IT戦記より引用)

ということなので構築中のscript要素はdocument.scripts[document.scripts.length-1];で取得可能ということに最近気づいた。

<html>
<head>
<script id="foo">
current = document.scripts[document.scripts.length-1];
alert(current.id); // foo
</script>
<script id="bar">
current = document.scripts[document.scripts.length-1];
alert(current.id); // bar
</script>
</head>
<body></body>
</html>

あぁ2月6日か…。無駄に年とった(22)ので記念エントリーでした…(--;