htmlのことで質問です。


以下のコードって、htmlの文法(?)的に大丈夫なのでしょうか?

<script src="data:text/javascript;charset=utf-8,alert(&quot;Hello!&quot;);"></script>
一応、Chromeでは動作しました。

回答の条件
  • 1人5回まで
  • 登録:2013/03/11 18:34:23
  • 終了:2013/03/13 19:55:35
id:hiroto300

属性値内に「"」をそのまま記述するといけないので、文字参照で記述しました。一応これだと動作はするのですが、これで大丈夫なのかと思い質問しました。

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4584ベストアンサー獲得回数19242013/03/11 23:23:56

それは違う >No.1 の回答

「HTML5.1 では○」と引用された以下の部分
http://www.w3.org/TR/2012/WD-html51-20121217/scripting-1.html

When used to include dynamic scripts, the scripts may either be embedded inline or may be imported from an external file using the src attribute.

に対応する HTML4.01 での記述はここ。
http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html

The script may be defined within the contents of the SCRIPT element or in an external file.


HTML5.1 で「embedded inline」、HTML4.01 で「contents」と表現されているのは、
<script>~</script> でくくられた中身。
HTML4.01 では、src 属性の説明でちょっと離れたところに書いてあるけど、src 属性で「external file(当の HTML ではない、外部のファイル)」を取り込む、って書いてある。それは、HTML5 も同じです。


質問で出されているのは、正確には「data URI scheme」と言われているもので、URI の一部です。
データを自分の中に持っている、というちょっと変わった定義だけど、データのありかを指し示している URI のひとつの表現です。
RFC2397 (http://tools.ietf.org/html/rfc2397)で定義されています(URL になってるけど)。

URI の一種なので、script タグだけではなく、img タグの src 属性とか、css の url() 指定だとかにも使える(ブラウザが実装していれば)。


RFC2397 は 1998年8月、HTML4.01 は 1999年12月で、data URI scheme が定められた方が、実は先だったりします。
なので、HTML4.01 にもひっそりと object タグのところで言及されていたりする。
http://www.w3.org/TR/1999/REC-html401-19991224/struct/objects.html#h-13.3.1


んで、質問に戻ると、HTML の文法としては、URI にしか見えてないので、許される範囲。
でも、期待通りの動作をするかどうかは、別の問題。
data URI scheme は、IE がまともに実装していないので、クロスブラウザを目指すなら使わない方が無難。
IE は、8 or 9 から画像に対してだけは使えるようになってるはずです。



質問の補足を受けての追記です。

えーっと、自分の読解力が足りず、申し訳ないのですが、scriptのsrc属性にはデータURIスキームを指定してはいけないのいうことで良いのですか?

HTML の規格上は認められているのですが、IE が対応してない。
どんなブラウザでも動くようにしたければ、当面(IE10?、11?で対応されるまで)は使えないです。

他4件のコメントを見る
id:hiroto300

補足への返信ありがとうございます。
本当に読解力不足です、すいません…。

htmlの規格ではデータURIスキームは認められているのですね。
また、自分の環境にIE10があるのですが、しっかり動かないようでした。

また機会があればよろしくお願いします。

2013/03/13 19:55:09
id:a-kuma3

本当に読解力不足です、すいません…。

いや、分かるように書いてないぼくが悪い m(_ _)m

script タグの src 属性に関してだけ言えば、script タグの中身にコードを書いているのと機能的には何の違いも無く、サイズ制限がある分、利用する局面が思いつかないので、IE では実装されなくても不思議ではないです。
画像に対する data URI scheme だとリクエストの回数が減るかもしれない、というメリットはありますが、こちらもブラウザのキャッシュが効くことを考えると、性能的なメリットは(あまり)無いかな、と思います。

2013/03/13 21:42:04

その他の回答(1件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492013/03/11 19:16:34

(1)使っても良いかという意味の質問であれば、
「ブラウザで実行できるのであればOKというのが実情」なので○です。

ちなみにFirefox19.0.2でも動作しています。
ダブルクォートの代わりにシングルクォートも使えます。

<script src="data:text/javascript;charset=utf-8,alert('Hello!');"></script>

(2)src属性にJAVAScriptコードを直接書き込むことが、
標準的な文法に合っているかどうかという意味の質問であれば、
W3Cのどの勧告に従うかによって、その是非が変わります。

HTML4.01ではURIの指定のみだったので×
http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html

This attribute specifies the location of an external script.


HTML5.0 / HTML 5.1 では○
http://www.w3.org/TR/2012/CR-html5-20121217/scripting-1.html#the-script-element
http://www.w3.org/TR/2012/WD-html51-20121217/scripting-1.html#the-script-element

the scripts may either be embedded inline or may be imported from an external file using the src attribute

id:windofjuly

訂正します。すみません。
「HTML5.0 / HTML 5.1 でも×」です。
詳細は回答No.2並びに回答No.2内のコメントでのやりとり参照。

2013/03/12 14:09:54
id:a-kuma3 No.2

a-kuma3回答回数4584ベストアンサー獲得回数19242013/03/11 23:23:56ここでベストアンサー

それは違う >No.1 の回答

「HTML5.1 では○」と引用された以下の部分
http://www.w3.org/TR/2012/WD-html51-20121217/scripting-1.html

When used to include dynamic scripts, the scripts may either be embedded inline or may be imported from an external file using the src attribute.

に対応する HTML4.01 での記述はここ。
http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html

The script may be defined within the contents of the SCRIPT element or in an external file.


HTML5.1 で「embedded inline」、HTML4.01 で「contents」と表現されているのは、
<script>~</script> でくくられた中身。
HTML4.01 では、src 属性の説明でちょっと離れたところに書いてあるけど、src 属性で「external file(当の HTML ではない、外部のファイル)」を取り込む、って書いてある。それは、HTML5 も同じです。


質問で出されているのは、正確には「data URI scheme」と言われているもので、URI の一部です。
データを自分の中に持っている、というちょっと変わった定義だけど、データのありかを指し示している URI のひとつの表現です。
RFC2397 (http://tools.ietf.org/html/rfc2397)で定義されています(URL になってるけど)。

URI の一種なので、script タグだけではなく、img タグの src 属性とか、css の url() 指定だとかにも使える(ブラウザが実装していれば)。


RFC2397 は 1998年8月、HTML4.01 は 1999年12月で、data URI scheme が定められた方が、実は先だったりします。
なので、HTML4.01 にもひっそりと object タグのところで言及されていたりする。
http://www.w3.org/TR/1999/REC-html401-19991224/struct/objects.html#h-13.3.1


んで、質問に戻ると、HTML の文法としては、URI にしか見えてないので、許される範囲。
でも、期待通りの動作をするかどうかは、別の問題。
data URI scheme は、IE がまともに実装していないので、クロスブラウザを目指すなら使わない方が無難。
IE は、8 or 9 から画像に対してだけは使えるようになってるはずです。



質問の補足を受けての追記です。

えーっと、自分の読解力が足りず、申し訳ないのですが、scriptのsrc属性にはデータURIスキームを指定してはいけないのいうことで良いのですか?

HTML の規格上は認められているのですが、IE が対応してない。
どんなブラウザでも動くようにしたければ、当面(IE10?、11?で対応されるまで)は使えないです。

他4件のコメントを見る
id:hiroto300

補足への返信ありがとうございます。
本当に読解力不足です、すいません…。

htmlの規格ではデータURIスキームは認められているのですね。
また、自分の環境にIE10があるのですが、しっかり動かないようでした。

また機会があればよろしくお願いします。

2013/03/13 19:55:09
id:a-kuma3

本当に読解力不足です、すいません…。

いや、分かるように書いてないぼくが悪い m(_ _)m

script タグの src 属性に関してだけ言えば、script タグの中身にコードを書いているのと機能的には何の違いも無く、サイズ制限がある分、利用する局面が思いつかないので、IE では実装されなくても不思議ではないです。
画像に対する data URI scheme だとリクエストの回数が減るかもしれない、というメリットはありますが、こちらもブラウザのキャッシュが効くことを考えると、性能的なメリットは(あまり)無いかな、と思います。

2013/03/13 21:42:04
id:hiroto300

お二方とも、回答ありがとうございます。

えーっと、自分の読解力が足りず、申し訳ないのですが、scriptのsrc属性にはデータURIスキームを指定してはいけないのいうことで良いのですか?

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません