- 締切済み
"<scr"+"iptこれって何?
とあるページのソースにこんな記述がありました。 document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://xxx.js\" ><\/scr" + "ipt>"); どうして<scriptと一気つづりにせずに、「"<scr" + "ipt」などとやっているのでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- UKY
- ベストアンサー率50% (604/1207)
> これはどこにその規定がかかれているのでしょうか。ECMAScriptの標準規格ですか? これは HTML 文書のどの部分がスクリプトであるかを決定する問題ですから、HTML の仕様書で決められています。(より正確には、HTML のベースとなっている SGML の仕様書で決められています) スクリプトが HTML 文書の中にある以上、文書全体はまず HTML として解析されます。したがって、文書全体はまず HTML として正しい形式を保っていなくてはなりません。スクリプトの中に「</」が出てきてはいけないとか「<script」と書くと混乱するとか言うのは、そういう HTML レベルでの話です。 スクリプトとしてはわざわざ '</script>' を '<' + '/script>' と書く意味はないのですが、「</」の二文字を含むスクリプトを HTML の中に書くことはできないので、仕方なくこういう書き方をするわけです。 スクリプトを HTML の中に書くのではなくて外部ファイルにする場合は、HTML に関する制約はないので「</」をそのまま書いても構いません。 (なお、私のこれまでの話は (No. 3 の回答も含めて) XHTML ではない HTML の話です。XHTML ではこれよりも更に厳しい制約があります。)
- B-Happy
- ベストアンサー率0% (0/1)
横から失礼します。 この書き方は前から引っ掛かっていたのですが、そうすると、"<scr" + "ipt>"と分けて書くと、それを解釈するときの文字列連結としては一緒ではないわけですか。タグの解釈の点で違うのだと思いますが、"abc" "a"+"b"+"c"とはなにか違うのでしょうか。 あと、UKYさんへの質問ですが、 >厳密には、「</」の二文字が出たところでスクリプトの >終わりだとみなす決まりになっています。 これはどこにその規定がかかれているのでしょうか。 ECMAScriptの標準規格ですか?
- UKY
- ベストアンサー率50% (604/1207)
例えば、次の書き方は正しくありません。 <script type="text/javascript"> document.write('<script type="text/javascript" src="xxx.js">'); document.write('</script>'); </script> というのも、 document.write('</script>'); の中にある「</script>」の部分がスクリプトの終わりだとみなされてしまうからです。厳密には、「</」の二文字が出たところでスクリプトの終わりだとみなす決まりになっています。そこで、「'<' + '/script>'」や「'<\/script>'」のように「</」の二文字が続かないように書く必要があるわけです。 (厳密には「</script>」 だけではなくて 「</p>」 や 「</div>」 なども「<」と「/」を分ける必要があります。ほとんどのブラウザは見逃してくれますが。) また、古いお馬鹿なブラウザではスクリプトの中で「<script」のようなものをそのまま書くと混乱して誤作動する (といわれていた) ので、「"<scr" + "ipt」のように分けて書くことがありましたが、さすがに今のブラウザはそこまで馬鹿じゃないのでそのまま「"<script"」のように続けて書いても問題ありません。
- yambejp
- ベストアンサー率51% (3827/7415)
検索エンジンなどにヒットさせたくない、もしくは アクセス者にソースを簡単に流用されたくない ためかもしれません。 いずれにしろ、それをご存知なのは書いた本人 以外ないでしょう。
- fire--
- ベストアンサー率49% (146/293)
試していませんが、続けるとその部分をブラウザがscriptとして 解釈する場合があるのじゃないでしょうか。