• ベストアンサー

JavaScriptの中に書くhtmlコメントの意味は?

JavaScriptではよくこういうコードを目にします。 1:<script> 2:<!-- 3:… 4://--> 5:</script> この2行目と4行目のコメントアウトの意味についてです。 きわめてよく目にする説明は 「JavaScriptに対応していないブラウザの為の記述です」 というものです。 うん。見飽きました。 しかしその実害について具体的に記述されているものを 一度も見たことがありません。 で、いつも「実害は何?」と問いたくなるのです。 実際にこれを記述しないことが原因で私は困ったことがありません。 また、困ったという話も聞いたことがありません。 (むしろエディタのキーワードハイライティングが無効になってしまうので 可読性を高めるためには書くべきではないようにも思えます) 10年20年前は問題が発生することもあったのかもしれませんが 事実上すでに都市伝説と化している気もします。 そこで問題です。 (1)書いてますか? (2)書かずに実際困ったことはありますか?(あるならいつごろか) (3)書かずに困ったという話を聞いたことがありますか?(あるならいつごろか) (4)具体的にどんなブラウザ・バージョンで問題が生じるのか (4)の情報があると非常にうれしいです。なくても 雑談的なご意見でも歓迎します。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Werner
  • ベストアンサー率53% (395/735)
回答No.3

> 「JavaScriptに対応していないブラウザの為の記述です」 厳密にはちょっと違っていて、 script要素に対応していない(script要素を知らない)ブラウザのための記述です。 JavaScriptに未対応のブラウザでも、 script要素を知っていればscript要素の内容はちゃんと無視されます。 (HTML3.2以降に準拠しているブラウザならscript要素は知っているはずです。) script要素を知らないブラウザにとってはscript要素は未知の要素なので、 script要素の内容を非表示にするといった動作が出来ません。 > (1)書いてますか? いくつかの理由からJavaScriptは外部ファイルにしているので、 そもそも書く必要がないです。 (エディタのキーワード強調を動作させるためとか、 xhtmlにおいてJavaScriptコードをコメントで囲むと本当に無視される可能性があるとか、 script要素内に書く場合には出現させてはならない文字列などいろいろ気にしないといけないことがあるとか。) なお、掲示板などでサンプルコードを提示する時にscriptで囲む場合はありますが そのときはたいていコメントは書いてません。 > (2)書かずに実際困ったことはありますか?(あるならいつごろか) > (3)書かずに困ったという話を聞いたことがありますか?(あるならいつごろか) 実害は、上にも書いたとおり、 script要素の内容が表示されてしまう、です。 > (4)具体的にどんなブラウザ・バージョンで問題が生じるのか 最近のメジャーなブラウザでなら問題は起こらないです。 試したことはないですが、JavaScript対応したのがNN2.0、IE3.0の時なので、 それ以前のブラウザでなら問題が起こるかもしれません。 ○おまけ こういうコードだと コメントを消すとうまく動作しなくなります。 <script><!-- alert("</script>"); //--> </script> ○参考(以前答えた質問) 【JavaScript】いまどき未対応のブラウザなんてありますか? -OKWave http://okwave.jp/qa2462414.html

mibusys
質問者

お礼

既出の質問だったのですね。 やはり常識的には不要としていいみたいですね。 参考になりました。ありがとうございました。

その他の回答 (3)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

見つけちゃったので回答してみるわ。 (1)書いてますか? 書いてるわね。 なんか既におまじないと化しているわ。 (2)書かずに実際困ったことはありますか?(あるならいつごろか) ないわね。 むしろそういうブラウザを見つけたら 障害として報告するかも。 (3)書かずに困ったという話を聞いたことがありますか?(あるならいつごろか) IE2では発生したらしいわ。 この目で実物を見たわけじゃないので確かなことはいえないけど。 8年位前のHTMLの本ならサンプルが載っているかも。 (4)具体的にどんなブラウザ・バージョンで問題が生じるのか <script>タグが未サポートのブラウザなら 確実に発生するんじゃないかしら。

mibusys
質問者

お礼

>むしろそういうブラウザを見つけたら >障害として報告するかも。 これウケました。 まぁそういうもんですよね。でも書いてるんですね。 もはや対応していないブラウザが非常識で 非常識なブラウザの相手をしなければならない 必然性はないように思うようになりました。 参考になりました。ありがとうございました。

noname#94983
noname#94983
回答No.2

(1)書いてますか? 書いている。 (2)書かずに実際困ったことはありますか?(あるならいつごろか) ある。いつごろというか、けっこう頻繁に。 (3)書かずに困ったという話を聞いたことがありますか?(あるならいつごろか) ある。いつごろということでなく、年がら年中。 (4)具体的にどんなブラウザ・バージョンで問題が生じるのか 特に有名なブラウザでは、ない。 Web系の開発を請け負っている。で、まぁクライアントの要望に応じていろいろとプログラムを作っている。最近の傾向として、他のサイトの情報を取得し処理して再利用するような機能の要望が非常に多い。RSSなどのようにXMLならば厳格にタグが処理されているので簡単なのだが、HTMLを読み込んで処理するとなるとこれはかなり苦労することがある。 すべてのリテラルをタグでくくってきちんと書いてあるなら、正規表現で一発で必要なデータを抽出できる。ところが、タグの文法を無視して書いて(それで読めてしまうブラウザがあることに問題があるといえばあるんだが)そのままになってるようなサイトとかだと、これが面倒なんだ。「こいつら、なんで文法通りに書けないんだ!」と頭を抱えることもある。 Webにアップされたファイルというのは、「Webブラウザ」だけが利用するわけじゃない。さまざまなプログラムが利用している。Webで公開するということは、どこでどんなプログラムがそれを利用しているかわからないんだ、ということも考えて作ってくれると、こっちは大いに助かる。 ま、必ずしも一般的な意見じゃないが、そういう立場の人間もいる、ってことだな。

mibusys
質問者

お礼

なるほど。 表示する際には問題ない。 でも、コンテンツを解析する作業をする人が、 scriptタグの解釈に対応していない解析するプログラムを使用している場合に 解析側が困ってしまうということですね。 特殊ですねー。というかscriptタグを解釈できるプログラムを 使ってほしいようにも思えますけど。それも難しいのですかね。 特殊な事情の人もいるのですね。参考になりました。 ありがとうございました。

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.1

>実害は何? <script>に対応していないブラウザだと、 <b>や<i>などのマークアップのタグの一種だと認識し、 <script>という命令をどう処理していいかわからないため無視 結果、<script></script>間はそのままマークアップなしの「文字として」表示される <!---->はコメントなので表示はされない 逆に、<!---->なしだとブラウザがスクリプトを人間が読むための文章だと認識してスクリプトがむき出し表示になる (1)書いてますか? 書いてます。が、最近は外部ファイル化で「書いてはいけない」状況が多いです。 (2)書かずに実際困ったことはありますか?(あるならいつごろか) ないです。その時代に私は生きていたのかも知りません。 (3)書かずに困ったという話を聞いたことがありますか?(あるならいつごろか) ないです。1秒くらいの努力で防げる現象ですから、騒ぐほどではないのでは? (4)具体的にどんなブラウザ・バージョンで問題が生じるのか <script>に対応していないブラウザでしょうね。 とほほさんのHPより引用(<script>のページ)    → サポート H3~H4s~ / e3~ / N2~ これより前のバージョンが怪しいのでしょうね。IE2?聞いたこと無いです(笑) 私が知ってるのは古くてIE5.5・・・私には無縁な話なんですね・・・

mibusys
質問者

お礼

NN1かIE2以前の場合は問題が発生するかもしれないということですね。 やっぱりそんなもんですよね。 あとはNN1かIE2以前でも正しく動作するhtmlを書くべきかということですね。 そんなバージョンをサポートしているシステムやサイトを見たことないし サポートすべきならスタイルシートの使用を禁止しなければならなくなります。 やっぱり21世紀の現代としては都市伝説っぽいですね。 ありがとうございました。

関連するQ&A

  • 未対応ブラウザ向けコメントについて

    初歩的な質問なのですが、調べて解決できなかったので どなたか教えてください。 通常<script> タグの中身を 1 <script language="javascript"> 2 <!-- 3 4 //--> 5 </script> このようにコメントアウトすると読んだのですが、 javascript対応のブラウザの場合、 2行目のはんぱなタグが残ってしまうような気がします。 1 <script language="javascript"> 2 //<!-- 3 4 //--> 5 </script> ↑これならば完全に2・4行目のタグがコメントアウトされ、 未対応ブラウザでも <script language="javascript">//</script> と、ソースが表示されなくなると思うのですが…。 おそらく何かが理解できていないと思うので、 正しい答えを教えて頂けないでしょうか。 宜しくお願いします。

  • なぜ外部jsファイルはコメントアウトが必要ないのか?

    htmlに直接Javascriptを書く場合は、非対応ブラウザへの考慮としてコメントアウトを記述せよと教わりました。以下のように書けば良いんですよね? <script type="text/javascript"> <!-- (スクリプト) //--> </script> しかし思ったのですが、外部jsファイルを呼び出す場合はこうなります。 <script type="text/javascript" src="script.js"></script> コメントアウトは記述されていません。また、過去勉強中にさまざまなサイトからサンプルをダウンロードして見てましたが、jsファイルの方にコメントアウトが記述されていることもありませんでした。つまりこのやり方ですとコメントアウトがまったく出てこないわけですが、これはなぜでしょうか? もう1つお聞きしたいのですが、もしコメントアウトを記述しないでそのhtmlファイルをJavascript非対応ブラウザで見た場合、どのような挙動をするのでしょうか?

  • Javascriptでデクリメント(--)を使うとInvalidに!

    xhtmlでマークアップし、常にValidatorでValidな文書になるよう心がけています。xhtmlでJavascriptを使う際、自身に埋め込むか外部jsファイルに記述してそれを呼び出す方法の2種類があります。この前者の方法を使った場合、スクリプトがデクリメント(a--や--bなど)を含んでいるとInvalidになってしまいます。 原因は分かっています。 Javascript記述時に、Javascript非対応ブラウザへの対処としてコメントアウトの記述をします。以下のように。 <script type="text/javascript"> <!-- (スクリプト) //--> </script> このコメントアウト中にハイフンが2つ以上連続して出現してはいけないんですよね。xhtmlのソース中のデクリメントがこのハイフン2つとしてひっかかってしまったのでしょう。 ここで私がお聞きしたいのは、これにどのように対処するべきかということです。そもそもxhtmlにJavascriptをベタ書きするのが間違いで、外部ファイルを使うべきなのでしょうか。それともコメントアウトを記述しなければよいのでしょうか?

    • ベストアンサー
    • HTML
  • 【JavaScript】いまどき未対応のブラウザなんてありますか?

    JavaScript初心者です。 現在専門書を見て勉強しているのですが、頻繁に「古いブラウザ対策」の記述が出てきます。たとえば、 <script type="text/javascript"><!-- document.write("ようこそ!"); //--> </script> の <!-- や //--> とか、 if (document.images) { などです。 シェア0.5%未満のブラウザは無視してかまわないと考えているのですがこれについてご意見お願いいたします。できれば仕事でWeb制作されている方のご意見が助かります。よろしくお願いいたします。

  • JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?

    JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味? YOUTUBE日本語版 http://jp.youtube.com/ のHTMLソースを見ていたら、 <script type="text/javascript">     window.google={kHL:"ja"}; </script> という記述を目にしたのですがこれはどういう意味あいというか目的のものなのでしょうか? 教えていただければ幸いです。

  • JavaScript のdocument.writ

    JavaScript で以下のような感じでdocument.write内にスクリプトを記述させたいのですが、うまくいきません。 document.write(“<script type="text/javascript" language="javascript">var aa_conf = {site:458,frame:13,width:125,height:125,color:["ffffff","FFFFFF","2200CC","F25D5D","671F28"],host:'aa.aa.jp',ver:1.1};</script><script type="text/javascript" language="javascript" src=http://aaa.com/a.js charset="utf-8"></script>”); \を”の前にいれたり、<script>を二行に分けたり、いろいろしてみたのですが、解決しません。 よろしくお願いします。

  • JavaScriptプラグインが読み込めません

    「easySlider1.7」というJavaScriptプラグインを使い、サイト内の画像をスライドさせようとしています。 MacのデスクトップにおいたフォルダのHTMLと同じ階層にeasyslider1.7というフォルダをおき、<head>内に <script type="text/javascript" src="easyslider1.7/js/easySlider1.7.js" ></script> <script type="text/javascript" src="easyslider1.7/js/jquery.js"></script> と記述し、 <script type="text/javascript"> $(document).ready(function(){ $("#slider").easySlider({ auto:true }); }); </script> で動作させようとしているのですが、 ブラウザで試すと動かず、コンソールには ReferenceError: Can't find variable: jQuery TypeError: Result of expression '$("#slider").easySlider' [undefined] is not a function. と出てきます。 上段の”jQuery”はeasySlider1.7.js内に記述されているものです。 ちなみにgoogleAPIのjQueryをロードしても同じエラーが出ました。 何が原因なのでしょうか。ご回答宜しくお願いします。

  • Javascriptでブラウザ振り分け。

    Javascriptでブラウザ振り分け。 Javascriptでブラウザの振り分けを行いたいと思います。 振り分けをする対象は 『IE7以前 <--> IE8以降』 サイトを徘徊して色々見て周ったのですが 一番簡単な方法として if(navigator.appVersion.indexOf("MSIE 5",0) != -1) alert("IE5ですね") の記述を見つけました。 が、上記のスクリプトはIE5のみを判定するスクリプトで IE7以下、IE8 の振り分けではなく困っています。 引数として文字列が返ってくるのであれば演算子を 『>』等では難しそうですし・・・。 良い方法はありませんでしょうか? よろしくお願い致します。

  • JavaScriptをgoogle chromeで

    JavaScriptの学習を始めたのですが、最初で躓いてしまいました。 私はgoogle chromeを規定のブラウザとして使用しています。 test.htmlでの記述: <html> <head> <title>JavaScript test</title> <meta http-equiv="Content-Script-Type" content="text/javascript"> </head> <body> <script type="text/javascript" src="test.js"> </script> </body> </html> test.jsでの記述: var num=[11,22,33,44,55]; var name=['test','test1','test2','test3','test4']; for(var i=0;i<5;i++){ document.write(name[i]+"の点数は"+num[i]+"です<br />"); } 期待していた表示は、 testの点数は11です test1の点数は22です test2の点数は33です test3の点数は44です test4の点数は55です という感じなのですが・・・google chromeでは tの点数は11です eの点数は22です sの点数は33です tの点数は44です ,の点数は55です と表示されてしまいます。 IEでは問題ありませんでした。 全てのブラウザで問題なく表示させるためには、 どのようにすればいいのでしょうか? ご教示願います。

  • 外部JavaScriptの読み込み

    超初心者です。よろしくお願いします。 Macromedia Dream waverMX2004でホームページを作成しているのですが、見た目を良くしたくてスワップイメージやポップアップメニューなどを加えたところ、xxx.jsと自動的にファイルが作成され、 <script language="JavaScript" src="xxx.js"></script> と外部から読み込めるようになっていました。 しかし、<script language="JavaScript" type="text/JavaScript">○○○○○</script> という記述が残されているのですが、この○○○○○の部分を外部ファイルにすることは出来るのですか?(ソフトでの操作ではなく、Notepadなどで)

専門家に質問してみよう