「script要素」へのコメント
「ばけらの HTML リファレンス(未完成) : script要素」について、8件のコメントが書かれています。
[6479] Re:「script要素」
hoshikuzu|star_dust (2011年3月10日 22時3分)
[QUOTE]
ただし、CDATA区間では「]]>」という文字列がマークとして認知されてしまいます。これをエスケープする方法は存在しませんので、「<」も「]]>」も出現する可能性がある場合には非常に面倒なことになります。
[/QUOTE]
★以下は面倒だけれども一応は大丈夫でしょうか?
・これではダメなので書き換えて…
<script type="text/javascipt">
//<!CDATA[[
……「]]>」を含むスクリプト……
//]]>
</script>
・次のようにすると?
<script type="text/javascipt">
//<!CDATA[[
……「]]]]><!CDATA[[>」を含むスクリプト……
//]]>
</script>
面倒な上にダメなのかもしれず…ご教示ください。
[6480] Re:「script要素」
ばけら (2011年3月11日 0時4分)
>・次のようにすると?
><script type="text/javascipt">
>//<!CDATA[[
>……「]]]]><!CDATA[[>」を含むスクリプト……
>//]]>
></script>
>面倒な上にダメなのかもしれず…ご教示ください。
CDATA区間を終わらせて、外に ]]> を書くということですね。
理論上はそれでOKなはずです。
実装的にどうなのかはちょっと分かりませんが……。
[6548] Re:「script要素」
hoshikuzu|star_dust (2011年4月4日 21時33分)
> CDATA区間を終わらせて、外に ]]> を書くということですね。
> 理論上はそれでOKなはずです。
> 実装的にどうなのかはちょっと分かりませんが……。
ばけらさん、ご教示をありがとうございます。
※東北中心の震災のほか、いろいろとアタフタしているうちに、スッカリとお礼を申し上げるべきこと、忘れておりました。申しわけございません。
===
IE9ではXHTML5をサポートします( http://blogs.msdn.com/b/ie/archive/2010/11/01/xhtml-in-ie9.aspx )とのことですので、個人的にはいよいよもって、script要素の書き方が気になるところであったのです。
<script>
//<!CDATA[[
ここらへんにコーディングする
//]]>
</script>
上のような形で動的に書いちゃうことも増えてくることを予想したのですがその場合に例えば、
<script>
//<!CDATA[[
var strA = "ここらへんに動的に出力する";
//]]>
</script>
このような際の、エスケープ方法の再検討が必要なのではないかと愚考している次第なのです。
※XHTML5 のscript要素でCDATAマーク区間の記述が許されるのかどうか私にはまだわかっていないのですけれど…orz
[6550] Re:「script要素」
masa141421356 (2011年4月6日 8時57分)
(最速インタフェース研究会経由)
http://lowreal.net/logs/2005/07/07/2.html によると
結局 <!CDATA[[]]]]><CDATA[[>]]>
だそうです。
[6558] Re:「script要素」
えむけい (2011年4月9日 10時21分)
>//<!CDATA[[
誰も突っ込んでないみたいですが<![CDATA[の間違いでは? と思ったらそもそもばけらさんの記事からして間違ってますね。
# ローカルでテストXHTML書いててどうもエラーになると思ったら…。
>IE9ではXHTML5をサポートします( http://blogs.msdn.com/b/ie/archive/2010/11/01/xhtml-in-ie9.aspx )とのことですので、
だったらSGMLにもHTML5にも準拠していない謎のコメント解釈くらいいい加減どうにかしてほしいものです。
>個人的にはいよいよもって、script要素の書き方が気になるところであったのです。
'<'+'/script>'と同様']'+']>'とでもすればいいだけでは? 少なくとも手元でテストする限りではこれで問題なさそうです。
>※XHTML5 のscript要素でCDATAマーク区間の記述が許されるのかどうか私にはまだわかっていないのですけれど…orz
XHTML5はparseの規則についてはXMLに丸投げなので、CDATA区間もXMLの仕様通り普通に使えます。
[6560] Re:「script要素」
ばけら (2011年4月10日 11時13分)
>>//<!CDATA[[
>誰も突っ込んでないみたいですが<![CDATA[の間違いでは? と思ったらそもそもばけらさんの記事からして間違ってますね。
うはー。すみません。
修正しておきました。
[6564] Re:「script要素」
hoshikuzu|star_dust (2011年4月15日 1時9分)
えむけいさん>XHTML5はparseの規則についてはXMLに丸投げなので、CDATA区間もXMLの仕様通り普通に使えます。
ご教示をありがとうございます。
えむけいさん>'<'+'/script>'と同様']'+']>'とでもすればいいだけでは?
静的なXHTMLを手で書いているときにはそれで大丈夫と考えておりました。動的に外部のデータがはいってくる時にどうなるのかなと考えつつあるのですけれど。
Douglas Crockford さん風にとらえると、'<'+'/script>' みたいのは、/ を \/ とエスケープすれば + がいらないので簡単、つまり、'<\/script>'やら'<\/' やらにしてしまうことで比較的簡単とのことらしいのです。
var strA = "abc<\/script>def";
じゃぁ、この勢いで、] も \] とエスケープすればいいのかなぁ、と、ボヤボヤしている最中です。
[6565] Re:「script要素」
hoshikuzu|star_dust (2011年4月15日 1時19分)
頭が…変になりそう。
//<!CDATA[
var strA = "]]>";alert(1);var strB="<![CDATA[";
//]]>
いったん、strA の値を決める中から脱獄して、alert(1) した後、strBに値を与えつつCDATA区間に復帰ということをしたいのですが、うまくいってますでしょうか。
もちろん、> や < をエスケープしたほうが簡単ではありますが。
※JSONのエスケープ方法に違反してしまうかなー。
「ばけらの HTML リファレンス(未完成) : script要素」についてコメントを書く場合は、以下のフォームに記入してください。