web-dev-qa-db-ja.com

スクリプトタグにIDを与える

script要素にid属性を与えることで問題を簡単に解決できるシナリオに出会いました。ただし、 w3schools および quirksmodescript要素について読んだ後は、予期しない結果が生じる可能性があるようです。

Chrome、Safari、FF3 up、IE 7 up?

59
The Code Pimp

現在のすべてのブラウザで問題ありません。

<script id>が間違っていた唯一のブラウザはNetscape 4でしたが、これはずっと前に気にしなくなりました。

そのquirksmodeページは、language属性、スクリプト<!--の非表示、およびapplication/x-javascriptの使用により、古くなっているようです。 <script>内の<body>を避ける(および代わりに<head>に入れる)ことに関するアドバイスは、今日の推奨される慣行と矛盾しています。

<script>属性の互換性の問題について話している場合:deferはどこでも動作しないため、それに依存しないでください。 charsetはどこでも機能しません。また、提供されるスクリプトのContent-Typeのcharsetパラメーターも機能しないため、スクリプトの文字セットはページに一致する必要があります。 typeは常にtext/javascriptである必要があり、RFC 4329を書いた人たちが使用してほしい非稼働中の代替物の1つではありません。

94
bobince

要素にidを設定すると、id属性と同じ名前の新しいグローバル変数が導入されることに注意してください。

id as a global variable

9
niutech

まだNetscape 4をサポートしなければならない場合、多くのトラブルが発生します。そして、開発者の他の世界の哀れみと哀dolの意を表します。

簡単に言えば、私はそれを心配しません。

7
Robusto

私は長い時間が経ったことを知っていますが、 スクリプトタグのW3スクールの定義 を見ると、ある時点で

タグは HTMLのグローバル属性 もサポートしています。

そしてそれらの属性の中で、ta-da、あなたの素敵なIDを見つけるでしょう。

たくさんのタグについても同じことが言えます。これは、ニースのトリックを帽子から引き出す際に柔軟性を与えてくれます。

2
JBourne

id属性をscript要素に追加しても、ブラウザに問題はないと思います。

JavaScriptを介して追加のJavaScriptを読み込むいくつかのサイトでは、class属性を追加して、それらの参照を容易にしました。バリデーターは文句を言いませんでした。

2
alex