質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

6回答

24066閲覧

JavaScriptを<!-- -->で囲むのって具体的にはどのブラウザに対する配慮なんでしょうか?

opoonabst

総合スコア264

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

9グッド

10クリップ

投稿2016/02/24 14:38

HTML上にJavaScriptを直書きするときなど、

html

1<script> 2<!-- 3console.log("hogehoge"); 4--> 5</script>

こんな感じに<!-- .... -->でJavaScriptのコードがコメントアウトされているのをよく見ます。

このような記述をするのはscriptタグを認識していないブラウザだと
JavaScriptのコードが直接画面に表示されてしまうからそのための配慮、
というのは知識としては知っているのですが、

この『scriptタグを認識していないブラウザ』というのは
具体的にはどのバージョンのどのブラウザなのでしょうか?

対応ブラウザの要件として、最も古いブラウザになるのは
今だと多分IE6になると思うのですが(IE8対応すら減ってきてますが)

いくらIE6でもScript要素を知らないということは流石にありません。

ちょっと興味があり検証しようとしてみましたがIE6以前のものは
エミュレータも配布されていないようです。

Web黎明期から活躍してきた技術者の皆様教えていただければ幸いです。

正直なところ「可読性を下げるだけで何の役にも立ってないのでは?」というのが
本音ですが、それは置いといて・・・

ryunix, Magkinh, mimitchymouse, ActiveTK, dsk, a_yanyan, musix55, Motsu, ikuwow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

ベストアンサー

色々仕様書をあさってみたところ、HTML3.2の時にはscriptが既に考慮されていました。(将来的に使う予定なので、表示するなと言う記述だけですが)
HTML3.2 仕様書 STYLE, SCRIPT
その後のHTML4でscriptを理解できないブラウザのためにコメントアウトについての記述がありました。
HTML4.01 仕様書 18.3.2 スクリプトデータをユーザエージェントから隠す
なお、script内に<や>などがあってもSGMLとして問題無いのかは見つけられませんでした。
そして、XHTML1.0になると、コメントではXMLとして解釈される段階で消されるためなのか、<![CDATA[]]>で囲めになりました。
XHTML1.0 仕様書 4.8 スクリプト要素及びスタイル要素
最後に、HTML5では、HTML5はもはやSGMLでは無いので、互換性のために、<!--</script>以外は考慮しなくていいとなりました。
4.11.1.2 script要素のコンテンツの制約

HTML3.2に準拠している時点で不要かと思われます。時代的にはIE3やNN3でしょうか。NC4やIE4の頃にはscriptに対応していたと思いました。(ネットやり始めたのはNC4からなので、その前はちょっと・・・って年がバレる)

なお、現在サポートされている一般的なデスクトップ用ブラウザで最も古いのはIE9です。HTML5で作成した場合は、不要かと思います。

投稿2016/02/24 22:41

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2016/03/01 04:03 編集

> 最後に、HTML5では、HTML5はもはやSGMLでは無いので、互換性のために、<!--と</script>以外は考慮しなくていいとなりました。 HTMl5 では --> もコメントとして扱われるように仕様が変更されました。 この仕様変更によってWeb制作者は下記のように書ける様になりました。 <script><!-- console.log('test'); --></script> HTML 4.01 では --> がJavaScriptエンジンで許されない為、//--> のように書かなければ SyntaxError となります。 この仕様変更はHTMLとしてみれば美しいですが、JavaScriptとして見ると余計な制約が増えただけともいえます。 ちなみに、<!-- または --> はHTMLパーサでインラインコメントとして扱う為、minified 処理を間違えると期待通りに動作しなくなります。 <script><!-- console.log('test'); --></script> HTMLパーサとScriptパーサの両方の動きを保証した書き方をしなければならない為、外部スクリプトにするのが最もスマートといえると思います。
guest

0

あまり詳しくありませんが、いわゆるテキストブラウザの為の措置だと思っていました。

  • w3m
  • Lynx

また、検索エンジンやクローラ等のbotも <script> を解釈できない UA が存在すると思われます。
時代の変遷と共に <script> を読み飛ばすクローラが増えると思われますが、全てが完璧なHTMLパーサを持っているわけではない(作りの悪いパーサも中にはある)のでコメントアウトする措置自体は保険として有効だと思います。

Re: opoonabst さん

投稿2016/02/24 15:30

編集2016/02/24 15:31
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私はWeb黎明期を知らない若輩ですが、IE3とかNN3とかそのあたりのブラウザだったと思います。
今となってはそのHTMLコメントアウトは不要でしょう。
実際例えばteratailやFacebookやTwitterなどでもコメントアウトされていません。

投稿2016/02/24 15:02

dupont_kedama

総合スコア925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

XSS対策:JavaScriptのエスケープ(その3) - ockeghem(徳丸浩)の日記
http://d.hatena.ne.jp/ockeghem/20070519/1179592129

Scriptタグ内のコメントは…i-mode専用対応だったんだよ!!(キバヤシAA

投稿2016/02/25 09:51

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ページ閲覧目的で利用する一般的なブラウザにはscriptタグを理解できないものは見つけにくいと思います。
ただHTMLを理解して処理するプログラムは多数存在しますし
誰かが自分で作成したブラウザエミュレータもあるでしょうし
将来的に<script>タグが廃止されるかも知れませんし(まず無いと思いますけど)
そんなときに必要の無い<script>タグの中身がはじめからコメント扱いなら、問題もおきにくいだろうなと思います。

投稿2016/02/24 15:12

hirohiro

総合スコア2068

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

http://qiita.com/ha_g1/items/a227731ebea961e8b4e2
スクリプト無効設定です。これで確認をば。
<noscript> タグってまだ有効でしたっけ?

投稿2016/02/24 16:38

ipadcaron

総合スコア1693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2016/02/24 21:41

JavaScriptを解釈できるブラウザでJavaScriptを無効にする話と、JavaScriptを解釈できないブラウザの話は、全く別です。なので、この回答は無意味。
ipadcaron

2016/02/24 23:06

スクリプト無効にすれば解釈できないブラウザになるでしょ。スクリプトのセキュリティリスクがなくなってきたのと、スクリプト無しではまともに見れないhpが多くなったお陰でスクリプトを敢えて無効にするという意味が無い行為が話題にならなくなってきただけじゃないんですか。
chitoku

2016/02/25 00:13

スクリプトを解釈できないブラウザと、スクリプトを解釈しないブラウザは全く挙動が異なります。
sonor_3rd

2016/02/25 00:34 編集

質問は「scriptタグを認識せず、scriptタグ内のjavascriptについてコメントアウト化が必要なブラウザは何ですか?」という内容ですね。
ipadcaron

2016/02/25 00:50

了解です、誤りでした
otn

2016/02/25 04:42 編集

> スクリプト無効にすれば解釈できないブラウザになるでしょ。 なりません。無効にすると、「JavaScriptを構文解析して解釈はするが実行はしないブラウザ」になります。
iwaim

2016/03/01 06:17

そもそも「scriptタグを理解するUA」かつ「JavaScriptを解釈できないUA」が存在しうるということは理解した方がいい気がした。
ipadcaron

2016/03/01 06:22

はい、理解足りてませんでした。もっと勉強して理解したものだけに投稿するようにします。
otn

2016/03/01 12:50

> そもそも「scriptタグを理解するUA」かつ「JavaScriptを解釈できないUA」が存在しうる JavaScriptの構文解析が出来ないUAを「scriptタグを理解するUA」とは言わないでしょう。 あ、「JavaSCript以外の何らかのスクリプト例えばVBScriptだけ構文解析できるUA」ですか?理論的にはあり得ますが実在しないのでは?
think49

2016/03/02 01:37 編集

「script要素を解釈出来るが、scriptコードを実行しないUA」といいたかったのではないかと。 例えば、テキストブラウザ系はscriptエンジンを積んでいませんが、<script></script> はコメントと同様に扱うのが理想的な挙動かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問