• ベストアンサー

javascriptの分岐について質問です

HPのトップページ(/index.html)にアクセスされた時に相手のブラウザがjavascriptに対応しているか非対応かでページを自動で分けたいのですが自分で調べたところ2つの方法を見つけました。 ◆<SCRIPT LANGUAGE="JavaScript"> <!--- To hide JavaScript from old browsers var delay = 1 function nextPage() {timerId = setTimeout("changePage()", delay)} function changePage() {location = "JAVA scriptを使ったページのアドレス"}// ---> </SCRIPT> ※以上のコマンドをHTMLのHEADタグの中に入れます。 (<>は全て半角に直してください) ※次にBODYタグの最後あたりにonLoad="nextPage()"と記入すれば完成です。 これは本文内に次の一行を入れるだけです。 <META HTTP-EQUIV="refresh" CONTENT="1; URL="JAVA scriptを使っていないページのアドレス"> という方法と ◆<!--<head>~~</head>に貼り付けてください <meta http-equiv="refresh" content="10;url=javaoff.htm"> <SCRIPT LANGUAGE="JavaScript"> <!-- location.href="javaon.htm"; //--> </script> ソース中の赤文字の部分はご自分で変更してください という方法です。どちらも試してみたのですが、javaのオフの仕方が分からないのでそっちは確認しておりませんがjava対応で見てみるとどちらの方法も何秒かごとにカチッと画面を再び読み込み同じページ(javaバージョン)に戻ることを繰り返します。ちなみにメインのjavaを使っているページがindex.htmlでjavaを使っていない方はno-index.htmlで、どちらも同じ階層です。そしてindex.htmlの方に上記のソースを書いています。ファイル名はindex.htmlとno-index.htmlと変えていますがどこがおかしいのか分かりません。お分かりの方助言をお願いいたします。

  • roo41
  • お礼率57% (4/7)

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

  • ベストアンサー
回答No.2

お調べになった2種類の方法は どちらも、javascriptによる遷移とHTMLによる遷移を用意しておいて javascriptが有効であればjavascriptでの遷移を、 javascriptが無効であればHTMLでの遷移を動かす事によって、 ページを切り分けるという方法を取っています。 この方法ですと、用意するページは3種類となります。 index.html    ----- 分岐ページ  ├ script.html  ---- javascript有効ページ  └ noscript.html ---- javascript無効ページ ※ページ名は適当につけています roo41さんの場合、javascript有効ページの代わりに index.htmlを使おうとされていますが、 index.htmlで分岐処理が行われているので、 ページ遷移 ⇒ 分岐処理 ⇒ ページ遷移 ⇒ 分岐処理 ... というようにいつまでも続いてしまいます。 ※いわゆる無限ループ 対処方法としては、 今現在のindex.htmlから分岐処理部分を除いた物を javascript有効ページとして別途作成し、 index.htmlは分岐処理だけが記載されているページに します。 javascripが有効な際の遷移先を先ほど作ったページにしておけば 正常に利用できるかと思います。

roo41
質問者

お礼

そうだったんですか!何回試してもできないはずですね。気持ち的にあれこれと調べて作ったページなんで有効な方をindex.htmlにしたかったのですがやはりその方法の方が良いのですね。ありがとうございました

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

javaじゃなくてjavascriptです。 javascriptをjavaと略す習慣は改めた方がよろしいかと。 さて、ご質問の件ですが、 両方法ともそれぞれ1秒,10秒後に自分のページを読み込むように なっているので、カチッと画面を再び読み込みのは当然です。 javascriptが動いていない時のみ、no-index.htmlに移るという仕組みです。 これがいやなら、他にも方法があるのでは?

roo41
質問者

お礼

そうですね、もう少し良く勉強してみます

関連するQ&A

  • JavaScriptのオン/オフの使い分け

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="refresh" content="3;url=jtestOFF.html"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>JavaScriptのオン/オフ状態に応じて表示するページを変える</title> <script Language="JavaScript"> <!-- location.href = "jtestON.html"; // --> </script> </head> <body> しばらく、お待ちください。 </body> </html> 上記タグは某サイトの例文をコピペしたのもです。 http://time3.sakura.ne.jp/sub/QandA/diary/jscheck1.html 正しく動作するのですがJavaScriptがオンの時 ブラウザの「戻る」をクリックしてもページが元のページに戻りません。 何か良いお知恵はないものでしょうか?

  • このソースどういう意味ですか【JavaScript】

    <HTML> <HEAD> <TITLE>JavaScript Sample</TITLE> <META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript"> </HEAD> <BODY> : <INPUT TYPE="button" VALUE="OK" onClick="~"> : </BODY> </HTML> このソースの中の <META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript"> の部分ってどういう意味ですか? 特にTypeとHTTP-EQUIVの部分については個別で詳しく知りたいです。 回答よろしくお願いします。

  • META タグでページをリフレッシュさせると JavaScript の関数が呼べません

    【環境】 WindowsNT、IE5.50 HTML の META タグを使用して、60秒ごとにページをリフレッシュさせたいのですが、以下のように記述すると JavaScript の関数(go_next)を呼ぶことができません。 JavaScript の関数(go_next)を呼ぶには、「<A HREF="JavaScript:go_next(1);">リンク先</A>」と記述しています。 ---------------------------------------------------------------------- <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=shift_jis"> <META HTTP-EQUIV="refresh" CONTENT="60;"> <TITLE></TITLE> <BASE TARGET="_self"> <SCRIPT LANGUAGE="JavaScript"> <!-- function go_next(fm) {    ~(略)~ } // --> </SCRIPT> </HEAD>    ~(略)~ ---------------------------------------------------------------------- JavaScript でも、関数でなければ使用できるのですが・・・。 何かよい方法はありませんか? よろしくお願いします。

  • javascriptに関する質問です

    javascriptに関する質問です タグの"<",">"を入力したら"&t","&gt"に置き換えまた(ダブルオークション)を入力したら&qut ""また(空白)を入力したら&mbsp;また"&"を入力したら&ampに置き換えるjavascriptを作りたいのですがいまいちどう作ればいいのか方向が分かりませんどなたかご教授ください 個人としてはremoveTagを使い変更したいですがなかなかうまくいきません どなたかご教授ください !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>タグを置き換える</title> <script language="JavaScript" type="text/javascript"> <!-- function removeTag() { var str = document.myForm.before.value; var newStr = str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/\s/g,'&nbsp;'); document.myForm.after.value = newStr }

  • HTMLの画像自動更新について

    現在、 <meta http-equiv="Refresh" content="5">で自動更新をしているのですが、 毎回同じ画像が表示されてしまいます。 F5を押すと画像は更新されます。 キャッシュに問題があるのではと調べて下記のように書きました。 <HTML> <HEAD> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Pragma" content="no-cache"> <meta equiv="Expires" content="-1"> <meta http-equiv="Refresh" content="5;URL=index_i_i.html"> URLの「index_i_i.html」は同じHTMLファイル(名前は変えて)を用意して交互に飛ぶように設定しました。 ですが、上記の記述でも同じ画像が表示されます。 F5では更新されるのですが、F5と同じ更新をHTML内に記述するにはどうしたらよろしいのでしょうか? できれば、CGIやスクリプトは使いたくないのですが、使わなくてはいけないのであれば、教えてください。 お願いします。

    • ベストアンサー
    • HTML
  • Mac-IEでの複数フレームのリンク

    02-01-18のkyappunさんの質問と内容的には同じなのですが。 フレーム使用のホームページで、複数フレームを同時に変更したいのですが、MacのIE(5.0)では、どうしても動作しません。 ※WinのIE6.0、NN4.7、NN6.0、MacのNN4.7では動作します。…が、MacのIEでも 動いてほしいのです。 ソースは、以下のようにしました。 (このソースには、こだわってないです) 解決法をご存知の方がいらっしゃいましたら、どうかよろしくお願いします。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>フレームのリンク</title> <SCRIPT Language="JavaScript"> <!-- function changepage(top,bottom) {     parent.head.location.href=top;   parent.main.location.href=bottom; } //--> </SCRIPT> </head> <body> <form> <a href="javascript:changepage('head2.html','main2.html')">リンク1</a> <br> <a href="javascript:changepage('head3.html','main3.html')">リンク2</a> </form> </body> </html>

    • ベストアンサー
    • Mac
  • 背景に指定したイメージ以外の余白を見せないようにする方法は?

    こんにちは!まさにタイトル通りの質問です。 <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <META NAME=""> <META NAME=""> <META NAME=""> <META NAME=""> <META http-equiv="refresh" content="5;url=test.html"> <SCRIPT LANGUAGE="JavaScript"> <!-- function resizeWindow(){      window.resizeTo(720,580);  } //--> </SCRIPT> <title>test</title> <style type="text/css"><!-- body { background-repeat:no-repeat;} --></style> </HEAD> <body onLoad="resizeWindow()" background="top4.jpg" width=720 height=580 > </body> </HTML> としていますが、窓を大きくしたりすると右や下に余白が見えてかっこわるいです。どうすれば改善しますか? お願いします☆

    • ベストアンサー
    • HTML
  • ファイル生成について(C初心者)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="refresh";URL=http://***.**.**/***/***/ABCD001.html"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> </body> </html> ファイル名=ABCD001.html お世話になります。 上記のようなhtmlファイルがあって http://www.***.**.**/***/***/ABCD001.htmlの ABCD001.htmlの部分だけ変更して新しくファイルを生成しようと思います。 変更する場所のリストはテキストファイル(list.txt)に入っており ABCD001.html~ABCD100.htmlまであります。 そのため最終的には100個のファイルが生成されます。 このようなCのプログラムを作成したいのですが どうやればいいのでしょうか? fwrite・fscanfを使用するのではないかと思いましたが よくわかりませんでした。

  • JavaScriptをファイルに回す。(表現が不適かもしれませんが)

    JavaScriptをファイルに回す。 (表現が不適かもしれませんが) 通常、HTMLのページ構成は、 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>ページタイトル</title> </head> <body> </body> </html> が基本かと思われます。その中に、JavaScriptを組み込む際は、<head>~</head>内に記述して、<body>~ </body>内に何か表示するスクリプトなら、<body onLoad="hpopen()">などと記述しますよねぇ。 その、JavaScriptの<head>~</head>内の記述を、ファイル「*.js」にして、同じ動作をさせたいのですが、具体的にどうしたらいいのでしょうか?

  • ブラウザーの左下に、「java scriptエラー」とでてしまいます。

    自分のHPにjavascriptをつかっているのですが、ブラウザ(IE5.5)でみると、画面左下に、「java scriptエラー」とでてしまいます。でも、そのjavascriptは実際にちゃんと機能してくれます。「java scriptエラー」と出ないようにしたいのですが、どうすればよいのでしょうか?HPで使っているjavascriptは、以下の通りなんですが、何か間違っていますでしょうか? <html> <head> <title>test<title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <SCRIPT language="javascript"> function newwin1() { sub = window.open("test.html","window1","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=610,height=480"); x = (screen.width - 610) / 2; y = (screen.height - 480) / 2; sub.moveTo(x,y); } </SCRIPT> <!--ここから外部javascriptの指定--> <script src="newwin1.js"></script> <!--ここまで外部javascriptの指定--> </head>

専門家に質問してみよう