• 締切済み

【JavaScript】いまどき未対応のブラウザなんてありますか?

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

みんなの回答

  • NTJ
  • ベストアンサー率44% (46/103)
回答No.12

あ、連続解答になってしまいますが、補足事項を忘れていました。 『web制作会社』で働くための勉強であれば、JavaScriptは全く勉強しないか、もしくは徹底してエキスパートレベルになるまで勉強をするか、この何れかをお勧めします。 中途半端な知識だけをつけるのは、かえって邪魔になるだけですので。 おそらくは、半端なJavaScript知識を身に付けても、現場ではあまり役に立たないでしょう。 Ajaxのライブラリを自作できるレベルになれるなら別ですが。 それよりも、JSP、ASP、PHP 辺りを習得されることをお勧めいたします。 この方面ですと、「とりあえず作れる」というレベルでも、充分に現場で戦力に成り得ます。 もし、Webサーバー環境構築を自力で出来るなら、恐らくは引く手あまたでしょう。 JavaScriptはクライアントサイド処理系です。 制作の現場で特に必要とされるのは、サーバーサイド処理系の作成者です。 両者の必要比率は1:30程度な感じですね。 ・・・あたしはその「1」の側で暫く働いていましたので、これは「実感」です。

takosuke88
質問者

お礼

そうですね。PHPのほうがはるかに重要なのは知っています。 (うっかりPerlの勉強をしてしまいましたが) とりあえず、ロールオーバーとか窓開けとか、他人が書いたJavaScriptをある程度読めるレベルにはなりたいと思っています。ありがとうございました。

  • NTJ
  • ベストアンサー率44% (46/103)
回答No.11

おそらく、国内でのシェア50%を超えるかもしれない「ユーザエージェント」で、JavaScript未対応のものが存在します。 それは、i-modeです。ジョークではありません。 現在はGoogleもi-mode対応を行っているので、あなたの作成されたコンテンツを、i-modeで閲覧している人がいるかもしれません。 試しに、非対応ブラウザ対策部分の記述を外して、i-modeでご自分の作ったコンテンツを閲覧してみてください。 おそらくは、今後も非対応な機器は増加する可能性は低くはありません。 ひとつ予想され得るのはコンシューマ機ですね。 他にも「IT家電」などという怪しげな分野も存在します。 参考書の類で「古いブラウザ対策」などという文字を見かけたら、その参考書の著者は上記の問題を理解していないと考えても差し支えないと思います。 ・・・もはや、インターネットの閲覧者はパソコンを使っているとは限らない時代へ入ってしまっています。 「勉強中」あるならばこそ、「非対応エージェント対応」に関して、よく学んでおくべきかと思います。

takosuke88
質問者

お礼

モバイルですか。 留意しておきます。ありがとうございました。

  • bnosuke-x
  • ベストアンサー率39% (43/110)
回答No.10

Lynxでの表示を確認してみました。 その結果、私の記述に間違い、思い違いがあることがわかりました。 1)「コメント<!-- -->をつけないとエラーになる」 コメントで囲まないJavaScriptを含んだページを表示してみたところ、そこは単に無視されました。 2)「JavaScript非対応ブラウザではエラーになって、クロールされないのではないでしょうか。つまりGoogleにとってそのページは無いも同然です。」 上記の通りエラーにはならず、JavaScript部分が無視されるだけでした。ページ全体が「無いも同然」になるということはないでしょう。 ということで、コメントアウトしないことが、クロールの妨げになると言う事はない、と言えそうです。 ですから、#9さんのおっしゃるとおり、クロールに関してはJavaScriptに頼ったナビゲーションが問題で、コメントアウト云々は関係ないと言うことになります。 私の認識不足で関係ないところに話を持ってきてしまいました。 >「JavaScript非対応ブラウザではエラーになって、ロボットがクロールしない」というのがちょっとわかりませんでした。 これは私の表現がおかしかったです。 「JavaScript非対応ブラウザでエラーになり、そういうページは、ロボットが見たときもエラーになってそのページをクロール対象から外してしまうのではないでしょうか」 ロボットがブラウザを介して見ているという事を書いたわけではないです。 >「サイト全体が表示されないようなとき…」 >という記述は、日本語の意味として >「1ページ丸ごと表示されなくなる」という意味ではなく「該当箇所が表示されなくなる」という意味ですよね? 私はそういう意図で書いたのですが、今「ウェブマスター向けヘルプ センター:Google と相性の良いサイトを作成するにはどうすればよいですか。」の該当箇所を読み直してみたら別の意味だったようです。 サイト=ページの集合で、「サイト全体が表示されない」というのは「到達できないページがある」事を言っているようです。 >ちなみに私は、ロボットは元々JavaScriptやFlash、css部分を単純に読み飛ばしてHTMLだけ読むものと思ってました… この認識で正しいと思います。 さて、私の思いこみでいろいろと間違いを書いてしまいました。 困惑された方にはお詫びいたします。

takosuke88
質問者

お礼

実験までしていただきありがとうございました。

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

style要素内のCSSや、 script要素内のJavaScriptをコメントで囲むのは、 style要素やscript要素に未対応のブラウザで CSSやJavaScriptがそのままテキストとして表示されるのを防ぐためです。 JavaScriptを無効にしていたり、Lynxを使っていても、 ブラウザがscript要素を知っていれば その内容は表示されないので、 その場合とくにコメントはなくても大丈夫であるといえます。 JavaScriptを無効にしていたり、Lynxを使っている場合に問題となるのは、 ナビゲーションのほとんどをJavaScriptに頼っているなどで サイトの閲覧・巡回自体が困難になる場合ですが、 これはJavaScriptのコメントアウトとはまた別の問題だと思います。 で、styleやscript内の記述をコメント<!-- -->で囲むべきかどうかですが、 それ自体大した労力でもないので 私がもしscript要素内にJavaScriptを書くなら囲みます。 (古いブラウザのために莫大な労力が必要というならやらないかもしれない。) ただし、xhtmlを書いているときはコメント内が本当に無視されてしまうことがあり得るので コメントは使わないです。 ただ、私はJavaScriptもCSSもたいてい外部ファイルにするので script要素内にJavaScriptを書くこと自体がほとんどありません。 個人的には、コメントで囲むかどうかで悩むよりも、 外部ファイルにすることをおすすめしたいです。 > シェア0.5%未満のブラウザは無視してかまわないと考えているのですが > これについてご意見お願いいたします。 それらのブラウザに対応することによって得られるものと、 それらのブラウザに対応するために必要な労力のトレードオフ。 なので、労力に見合わないと考えるなら無視するのもありではないかと思います。

takosuke88
質問者

お礼

ありがとうございます。 基本的にxhtmlを使おうかと考えています。すると<!-- -->はむしろ使わない方がいいということですね。これは知りませんでした。 外部ファイルはそのつもりでした。その場合でも if (document.images) { とかの必要性は同じですよね?

  • bnosuke-x
  • ベストアンサー率39% (43/110)
回答No.8

IDが違いますが#1です。 ANo.1では回りくどい言い方をしてしまいました。 私が本当に言いたかったことは、「テキストブラウザに対応した作りにしないと、Googleに見てもらえないんですけど、良いんですか?」ということです。 検索エンジンのスパイダーは全て目の見えない人と同じです。 今回また別の参考URLを提示させていただきましたが、こちらのページの「サイトを簡単にアクセスできるようにする」のところに、JavaScriptを使用しているためにテキストブラウザでサイト全体が表示されないようなときにはクロールが困難になる場合がある、と書いてあります。 Lynxで確認して下さい、ともあります。 ですから、Googleに見てもらうためにはJavaScript非対応ブラウザのことも考えてサイトを作る必要があるのです。 個人で作るサイトならいざ知らず、商品として納めるサイトが「Googleからは見えません」でいいというお客さんはいないのでは? なお、私はWeb製作の現場の人間ではないので、現場でどうしているかはわかりません。 ですが、web技術側、Googleに近い側としては、「<!-- ~ -->」は最低限使いましょう。と言いたいです。 if(document.images)はすでにJavaScriptが動いていますから、無効にしてあれば関係ないかもしれませんが、コメントアウトはどんなブラウザでも共通ですよね? これを省略すると、JavaScript非対応ブラウザではエラーになって、クロールされないのではないでしょうか。 つまりGoogleにとってそのページは無いも同然です。 それどころか、そのページにリンクしていたページも、「このページはエラーのあるページにリンクしているなぁ」ということでランクが下がるかも知れません。 だから、「<!-- ~ -->」は最低でも必要です。 以上、技術側からの提言でした。 ご参考までにどうぞ。

参考URL:
http://www.google.co.jp/support/webmasters/bin/answer.py?answer=40349&topic=8522
takosuke88
質問者

お礼

SEOですか。 SEOは私もある程度やってますが、 「JavaScript非対応ブラウザではエラーになって、ロボットがクロールしない」 というのがちょっとわかりませんでした。 ロボットがクロールする場合に既存の「ブラウザ」で見ている、又はあえて昔のブラウザを介して見る場合がある、という意味でしょうか?それとも旧式(?)のロボットがクロールしているから、という意味でしょうか? また、 「サイト全体が表示されないようなとき…」 という記述は、日本語の意味として 「1ページ丸ごと表示されなくなる」という意味ではなく「該当箇所が表示されなくなる」という意味ですよね? ちなみに私は、ロボットは元々JavaScriptやFlash、css部分を単純に読み飛ばしてHTMLだけ読むものと思ってました…

回答No.7

ANo.5やNO.6と重複するかも。 シェアと訪問者に対する利用率は違います。 ブラウザシェアだけでなく、何の目的で作るか、ということにも目を向ける必要があると思います。 たとえば目の見えない人向けに公開しているガイドサイトであれば、 音声ブラウザの方が他のブラウザよりも利用率が高い可能性があります。 JavaScriptのサンプルサイトでは、JavaScript未対応(JavaScriptを停止させている)ブラウザでの利用はほぼ0になると思います。 たとえば、ハンゲームのサイト内では古いブラウザ、JavaScript未対応ブラウザはもちろん、Firefoxなどへのサポートは全く行っていません

  • stress
  • ベストアンサー率100% (1/1)
回答No.6

 大前提として、「何の為に勉強しているのか」が抜けているので、何とも言えないと言うのが正直な所です。  業務用途で使うページやWebアプリケーションであるのなら、利用環境に合わせて対処すべきかと思います。  例えば、大学等の教育機関系だと、MacOS System7.xや、Win95を今でも使っている人が結構居たりします(あくまでも例で、最近はそんな環境は蹴りますが)。  場合によってはxNix系対応云々言われるかもしれませんし。  普通のページで使用する為に勉強しているのであれば、JavaScriptが動作しなくても普通に閲覧可能な様に作った上で、極付加的な位置付けでJavaScriptを使用&ご指摘のブラウザ別対処を行った方がいいと思います(すごい個人的な見解ですが)。  一度Netscapeの古いバージョン等を導入してみてはいかがでしょうか?(下記参考URL等)  最新ブラウザでしか確認していなかった場合、あまりの惨状に驚くかもしれませんが。

参考URL:
http://ftp.netscape.com/pub/
takosuke88
質問者

お礼

勉強はweb制作会社で働くためです。 プロはIE3やNN3まで意識しているのか?さらにいうとそのブラウザチェックもしているのか?ということが疑問なのです。 大企業のサイトですら最近はNN4で閲覧不能だったり、制作会社作成のサイトでもIE5でみると崩れていたりします。(CSSに原因がありますが) とりあえず、 if (document.images) { などは現場では省略しないのが一般的かどうか知るだけでも助かります。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.5

がると申します。 「シェア0.5%未満のブラウザは無視してかまわないと考えている」については是とも否とも。 実際「業務で作成していて同様の意見をもたれている方」も少なからずいらっしゃいますし。 ただ、シェアというのは「その調査における母数集団中の割合」であって、厳密には考えなければならないのは「作成するWebサイトのメインターゲット層に対するシェア」だと思います、というのが一点。 で、例えばそのパーセンテージが0.5程度だとして。母数集団が一万人であれば、そこに50人の取りこぼしが生まれるわけです。 場合によっては、その「取りこぼした人たちの流す風評」からの影響とかもありますし。 そういった様々な要因を考えてなお「無視する」のであれば、それはそれでよろしいのではないでしょうか?

takosuke88
質問者

お礼

ありがとうございます。 とりあえず0.5%という数字を行ってみましたが、NN4ですら数百人に1人という割合なのに、JavaScript未対応のNN3やIE3はさすがにいないだろうというのが今回の質問の始まりでした。

回答No.4

古いブラウザへの対応と、JavaScript未対応ブラウザへの対応は違います。 JavaScriptにおいて、古いブラウザへの対応はJavaScriptで記述しますが、 JavaScript未対応ブラウザへの対応は(ブラウザが最新であろうと)HTML(XHTML、またはプレーンテキスト)で記述しなければなりません。 ・UNIX >> シェアはどれほどかご存知でしょうか? KDE環境で最も多く利用されているであろうKonquerorでシェア0.1%未満と思われます。 > 携帯サイトや特殊デバイス← 最近のものもJavaScript非対応なのでしょうか? 対応しているブラウザ(機種)と対応していないブラウザがあります。 各ブラウザの公式サイトを確認してください。 http://www.opera.com/ http://www.access.co.jp/ その他各携帯電話メーカーサイト(URL略) > シェア0.5%未満のブラウザは無視してかまわないと考えているのですがこれについてご意見お願いいたします。 どんなサイトを作るか、どこまで対応するか(すべきか)という管理者の考え方によりますが、 最近では一般的な個人サイトでも、シェア0.1%に満たない音声ブラウザとLynxなどのテキストブラウザへ対応するため、テーブルレイアウトをしない方向にあるようです。 (テーブルレイアウトとCSSデザインのどちらが作りやすいかは慣れとオーサリングツールの問題です) JavaScript対応ブラウザを使用しJavaScriptを切っている人は、そのブラウザ利用者の10%以上いると思われます。 (あくまで私見であり、公式的な発表ではありません)

takosuke88
質問者

お礼

なるほど。 JavaScriptを意図的に切っている場合までは結果を承知の上でと思いますんで今回は考えるのはやめにしたいと思っています。 ありがとうございました。

  • a_she
  • ベストアンサー率0% (0/1)
回答No.3

こんばんは。 ページを軽く・高速に表示してくれるタブブラウザなどを利用している方は結構多いと思いますが、 これはJAVAを禁止にしていることが多いです。 (基本設定がOFFになっていて、ユーザの任意でONにするタイプをよくみかけます) 私は普段OFFにしておいて、どこかにログインするときだけONにしてます。 だからネットサーフィンしていてリンクをクリックしても反応しないこともよくあり、 そういうときはわざわざONにして表示させる、という具合です。 快適にネットサーフィンしたい側としては、javaの使用は必要最低限にしていただきたいですね^^;

takosuke88
質問者

お礼

JavaScriptを使うことを前提にしています。 JavaScriptをきっているなら何をどうしても同じことだと思いますが?

関連するQ&A

  • javascriptの中にjavascript

    if( agent.search(/iPad|iPhone/) != -1 ){ document.write( '<img src="assets/images/ph05.jpg" /><script type="text/javascript">$(\'.fondos\').galleria({transition: \'flash\',transition_speed: 5000,thumbnails: false,show_imagenav: false});</script></div>' ); }else{ document.write('<object>・・・</object>' ); } </script> のスクリプトなのですが、 最初のdocument.write( ’・・・ の中に<script ・・・と書いているせいで、エラーとなります。 document.writeの中にscriptをかきたいのですが、どうすればいいでしょうか。 申し訳ございませんが、具体的に教えたください!!

  • ブラウザで表示を変更

    <SCRIPT TYPE="text/javascript"> <!-- if (navigator.userAgent.indexOf("MSIE")!="-1"){//for IE document.write("インターネットエクスプローラー"); } else { document.write("別ブラウザ"); } //--> </SCRIPT> 上記JavaScriptと同じように、インターネットエクスプローラーとそれ以外のブラウザで表示させるメッセージを変えたいのですが、どのように書けばいいのでしょうか。

    • ベストアンサー
    • Perl
  • javascript 初心者です。

    下記のソースのどこが間違っているのでしょうか。 <body> <script type="text/javascript" language="javascript"> <!-- var us; us = document.getElementById("uuss"); if ( us == 0 ){ document.write("オッケーです。"); }else if ( us == 1 ){ document.write("エヌジーです"); }else if ( us == 2 ){ document.write("未定です"); }else if ( us == 3 ){ document.write("空欄です"); } // --> </script> <div id="uuss">1</div> </body> 例えば<div id="uuss"> </div>の部分に1と入力すると、 「エヌジーです」という文字列を表示させたいのですが ブラウザで見ると「1」と出てしまいます。 よろしくお願いします。

  • JavaScriptの間違いがどこか教えてください。

    JavaScriptを勉強しはじめたばかりで、つまずいております。 時間ごとに違った言葉を表示するというJavaScriptです。 どこが間違えているのかわからないので、教えてください。 間違いはこの中にあるはずなのですが…。 <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3) { msg = "こんばんは"; } eles if (nowhours <= 11) { msg = "おはようございます"; } eles if (nowhours <= 16){ msg = "こんにちは"; } eles { msg = "こんばんは"; } document.write(msg); //--> </script> 正しい答えは <script type="text/javascript"> <!-- now = new Date(); nowhours = now.getHours(); document.write(nowhours); if (nowhours <= 3 ) { msg = "こんばんは"; } else if (nowhours <= 11) { msg = "おはようございます"; } else if (nowhours <= 16){ msg = "こんにちは"; } else { msg = "こんばんは"; } document.write(msg); // --> </script> なのですが、どこが違うのかまったくわかりません。

    • ベストアンサー
    • Mac
  • JavascriptからJavaへの変え方

    Javascriptで作ったものをJavaにしないといけなくなったのですが 私はJava初心者でまったくわかりません。 色々ネットで調べてみたのですが、どうも難しくて理解することができませんでした。 下にJavascriptで作ったものを載せてるのですがどなたかやり方を教えてもらえないでしょうか? <html> <head> <title>サンプル</title> <script type="text/javascript"> function jikoku() { dd = new Date(); document.F1.T1.value = dd.toLocaleString(); window.setTimeout("jikoku()", 1000); } </script> <script type="text/javascript"> mes = new Array(5); mes[0]="0"; mes[1]="1"; mes[2]="2"; mes[3]="3"; mes[4]="4"; date=(new Date()).getHours(); if( 0 <= date && date <= 5 ){ document.write(mes[0]); } else if( 6 <= date && date <= 10 ){ document.write(mes[1]); } else if( 11 <= date && date <= 16 ){ document.write(mes[2]); } else if( 17 <= date && date <= 19 ){ document.write(mes[3]); } else{ document.write(mes[4]); } </script> <script type="text/javascript"> function Random() { var kazu = Math.random(); kazu = kazu*100; kazu = Math.ceil(kazu); if( kazu<=9 ) document.write('<br/>○1<br/>'); else if( kazu<=19 ) document.write('<br/>○2<br/>'); else if( kazu<=29 ) document.write('<br/>○3<br/>'); else if( kazu<=39 ) document.write('<br/>○4<br/>'); else if( kazu<=49 ) document.write('<br/>○5<br/>'); else if( kazu<=59 ) document.write('<br/>○6<br/>'); else if( kazu<=69 ) document.write('<br/>○7<br/>'); else if( kazu<=79 ) document.write('<br/>○8<br/>'); else if( kazu<=89 ) document.write('<br/>○9<br/>'); else document.write('<br/>○10<br/>'); } Random() </script> <script language="JavaScript"> var imglist = new Array( "sample1.jpg", "sample2.jpg", "sample3.jpg", "sample4.jpg" ); var selectnum = Math.floor((Math.random() * 100)) % imglist.length; var output = "<img src=" + imglist[selectnum] + ">"; document.write(output); </script> </head> </html>

  • JavaScriptのコードの間違いを教えて

    いつもお世話になっております。 現在、JavaScriptの勉強をしているのですが、if構文のところでつまずいてしまいした。 下のコードがうまく実行できません。 間違いを指摘して頂ければと思います。 <doctype! html> <html lang="ja"> <head>    <meta charset="UTF-8">    <title>Javascript</title> </head> <body> <script type="text/javascript">    var x = window.prompt("好きな値を入力してください","100");    if (x>100)       {window.document.write("100より大きいです");}    else {if(x<100))       {window.document.write("100より小さいです");}       else {if(x=100))          {window.document.write("100です");}       }    } </script> </body> </html> なお、テキストエディタで記述し、実行はGoogleChromeで行いました。 よろしくお願いします。

  • javascriptの比較演算

    不可解な動作に困っています。 どなたかご教示ください。 <html> <body> <script type="text/javascript"> var a=8; if(10>a>0){document.writeln(a);} else {document.writeln("else");} </script> </body></html> だと、ブラウザで実行すると画面に8と表示されます。 一方 <html> <body> <script type="text/javascript"> var a=8; if(10>a>7){document.writeln(a);}else{document.writeln("else");} </script> </body></html> とすると、実行したときにelseと表示されます。 とても不可解です どうしてでしょうか。

  • 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ファイルをjavascriptから動的に呼び出したい

    呼び出し元のURLによって動作を変えたいJAVASCRIPTがあります。 普段外部のJAVASCRIPTを呼び出すときはよくこうするのですが <script type="text/javascript" src="js.php?key=url"></script> これでは「key=url」が固定になってしまいます。そこで下記のように <script> var commentname=document.URL; var str=encodeURIComponent(commentname); document.write('<script type="text/javascript" src="read.php?key=',str,'"><\/script>'); </script> document.writeを使って無理やり外部Javascriptファイルの呼び出しスクリプトを書いているのですが、この書き方はどうもエレガントさにかけるというか、いまいち気に入りません。 もっとほかに良い方法がある気がするのですが、調べてもわかりませんでした。おわかりになる方がいらっしゃったらご教示頂けないでしょうか。

  • JavaScript 外部ファイルの記述

    <script Language="JavaScript"><!-- h = (new Date()).getHours(); if ( h < 6) document.write("外は暗いですね"); if ((h >= 6) && (h <12)) document.write("午前中"); if ((h >= 12) && (h <20)) document.write("午後です"); if ( h >= 20) document.write("夜です"); // --></script> これは時間ごとに違った文字を表示するものです。 このJavaScriptを外部ファイル化したいのですが、うまくいきません。 以下のように記述しました。 h = (new Date()).getHours(); if ( h < 6) document.write("外は暗いですね"); if ((h >= 6) && (h <12)) document.write("午前中"); if ((h >= 12) && (h <20)) document.write("午後です"); if ( h >= 20) document.write("夜です"); これでどこか間違っているところがあるのでしょうか? よろしくお願いします。

専門家に質問してみよう