• ベストアンサー

ページを一回だけリロードさせる方法

こんにちは いつもお世話になっています 表題の通りページを読み込んだ後にすぐ 一回だけリロードさせたいのですが どのような方法があるでしょうか? location.reload(); だと永遠にリロードしてしまいます・・・

noname#38849
noname#38849

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

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

では、Cookieを使わない方法。ちとダーティですが。 <HEAD> <SCRIPT LANGUAGE="JavaScript1.2"> function pageJump () { if (!top.location.href.match(/\?1$/)) { top.location.href += "?1" } } //--> </SCRIPT> </HEAD> <BODY onLoad='pageJump()'> .... 一度普通に読まれたとき、URLの末尾が「?1」でなければ、それを くっつけてhrefに代入し、読みこみなおします。 "?1"は普通CGIへの引数ですが、通常のHTMLファイルがちゃんと呼び 出されます(エラーになりません)。単純に無視されます。 よって、一度呼ばれたことを表すフラグに使えます。 <A NAME=...>なんかで使う"#1"でもいいんじゃないの?、と おっしゃる鋭いひともいらっしゃるでしょうが、これだとブラウザが単純に 「同じファイルの#1ラベルの場所…ないや、じゃあ先頭を表示しとこう」 と判断して表示は変化せず、サーバにアクセスしにもいきません。 「?1」無しと「?1」つきだと、別ファイルだと思って2度アクセスに 行きます。

その他の回答 (6)

回答No.7

akijiroさんの回答、なかなか参考になりますが、気になった点が ありましたので失礼ながらちょっとコメントさせていただきます。 CGIスクリプトで切り分けるというのはいいアイデアですね。しかし、 URLを変えていいのでしたら、onlord=location.reload があるのと ないのと、二つのほぼそっくりなHTMLファイルを用意すれば済む 話ですね。 それからサンプルのスクリプトですが、読みこむファイルにflockを掛けるのは 無駄だと思うのですが、なにか意味があるのでしょうか。 リファラーもいい方法に思えますが、ブラウザの中にはリロードした ときにちゃんとdocument.refererを置きかえるかどうか、怪しいものが あります。また、リロード時にundefinedになるのを期待するとしたら、 ブックマークで飛んできたときとの区別がつかないと思うのですが。 「専門家」ということでしたのでちょっとぐらい突っ込んでも平気だろう、 と思い、なんだか細かいことを指摘してしまいました。お気を悪く されたらお詫び申しあげます。

  • akijiro
  • ベストアンサー率25% (2/8)
回答No.6

javascriptではなく、 perlではどうですか。 location.xxx.cgiで読み込んで、 cgiがそのファイルを読み込むときに置換とか。 間違っていたらごめんなさい。 即席で作ったソースです。 $file_thanks ="./xxx.html"; print "Content-type: text/html\n\n"; open(BHTML,"<$file_thanks"); flock(BHTML,2); while(<BHTML>) { s/onlord=location.reload//; print; } flock(BHTML,8); close(BHTML); これで読み込めば、出来るかも。ただ、これだとパスが xxx.cgiになってしまうので、baseタグでも入れておけば 問題ないと思います。 やったことはないですが、SSIで呼び出しても出来るかも? javascriptにこだわるなら、javascriptで、リファラーをとって???.com/xxx.html だったら置換するか処理をしない分岐を作れば問題ないでしょう。 cokkieはあまりすかれないので避けたほうが無難。 私は常にcokkieとjavascriptはオフにしています。 簡単な回答ですいません。 他に気づきましたらまた書きます。

  • mkim
  • ベストアンサー率67% (25/37)
回答No.4

こんばんわ。 私も、どうしても1回だけ、何のアクションも起こさずに リロードしたいならクッキーを使うしかないと思います。 <body>onLoadを使うにしても、再読み込みが入ると永遠に 繰り返してしまいますからね。 要するに、どこかに変数なり、一度リロードしたと言うフラグを 持たないことには、永遠に繰り返されてしまうと思います。 count=getCookie("COUNT"); if(count==null){ setCookie("COUNT",1); location.reload(); } 上の記述が正しいかどうかは、ちょっとわかりませんが、考え方として クッキーから変数COUNTを取得し、countに代入する。 そんで、countがnullならまだリロードしてないので、クッキーに COUNT=1と言うデータを保存する。 それから、リロードを入れると、2回目以降は、countがnullでないので if文の中を通らないと言う風になる。(予定) テストも何もしてないので、これで成功するかは、わかりませんけど 一つの考え方として提案させていただきました。 クッキー自体を無効にされたら、その地点でおしまいですけど^^;; がんばってください。

  • hequil
  • ベストアンサー率65% (242/372)
回答No.3

根本的に1回だけリロード処理が必要な時点で 設計ミスのような気がするんですが・・ #JavaScript無効にしてあったらどーするんだろう、とか とりあえず、他に思いついたのは <script type="text/javascript"><!-- rload = setTimeout( "location.reload()", 100 ); clearTimeout( rload ); // --></script> とかどうでしょう? うまくいくような気はしますが未確認です(苦笑) 参考まで

noname#38849
質問者

補足

解答ありがとうございます javaScriptが無効にしてあったらお手上げですね ^^; ご指摘のように setTimeoutで試してるのですが、上手くいきませんね 何故でしょうか????? (>_<)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.2

<BODY onLoad="location.reload();"> でご要望の処理が出来ると思います。 参考まで

noname#38849
質問者

補足

解答アリガトウゴザイマス <BODY onLoad="location.reload();"> でも、やはり永遠にリロードして無限ループになるようですが・・・

  • akino4
  • ベストアンサー率18% (35/185)
回答No.1

どうしても同じページをリロードしたいのですか? とりあえず別に似たようなページを作ればいいだけなら 別のページをリロードすればいいだろうし、 どうしても同じページにこだわるなら、cokkieでフラグをたてるのが簡単かな? でも、このときはクッキー無効にしてる人がいることを考えてやらないと 大変なことになるからきをつけてね。 あとは、CGIなんかと連携してhiddenタグに埋め込んでおくとか。

関連するQ&A

  • 1回だけリロードしたい

    開いたときに1度だけリロードさせたいのですが、たのページを参考に <script language="javascript"> <!-- if ( location.search.indexOf("1") == -1 ) { setTimeout("_reload()",1000); } function _reload() { location.href = location.href + "?1"; } //--> </script> を入れてみたのですが、リロードはされるものの、いわゆるブラウザの「更新」ボタンとは違うらしく、POSTで送られてきたデータを破棄した状態でリロードされるため、データの取得ができず困っています。 データを保持したままのリロード、つまりブラウザの「更新」ボタンのようなリロードを1度だけさせるにはどうしたらよいか教えてください。

  • JavaScriptでページを一度だけリロード

    とあるページにアクセスした際、JavaScript(jQuery)を使って一度だけページをリロードしたいと思っております。 <script language="JavaScript"><!-- function reload() { if (window.name != "test") { location.reload(); window.name = "test"; } } // --></script> 上記のような記述で試みたのですが、リロードしてくれません。 他に対応できる方法がございましたら、ご教授いただけますと幸いです。 以上、よろしくお願い致します。

  • リロード

    すいません。私JavaScriptはまったくの素人です。 あるページを5分ごとにリロードさせたくて、 <script language="JavaScript"> <!-- function reload_me() { document.location.reload(); setTimeout("reload_me()",300000); } //--> </script> <BODY onLoad="reload_me()"> と書いたところ、ロードしてくると同時に次のロードが始まってしまい、 300000という時間が全くきいてないような感じです。 (間髪を入れず無限にリロードが続いている状態) <body>のonLoadに書いてはいけないのでしょうか? それとも書き方がよくないのでしょうか? よろしくお願いします。

  • ブラウザの「戻る」ボタンを押した時にリロードさせる

    ブラウザの「戻る」ボタンを押して前のページに戻った時に1回だけページを リロードさせたいのですが、IEでは下記のようにすれば上手く出来ました。 <script type="text/javascript"> <!-- window.onunload = function(){location.reload();} --> </script> しかしながら、上記では他のブラウザ(Firefox・Opera・Safai・Google Chrome等)では リロードされません。 全てのブラウザで上手くリロードさせる方法はないでしょうか。 宜しくお願い致します。

  • リロード時

    送信ボタンを押すと一度リロードしてから送信するフォームを作ろうとしているのですが、  location.reload() でリロードすると入力されていたテキストフィールドの中身が空になったり、チェックボックスのチェックがはずれたりします。入力されたデータはそのままでリロードだけするいい方法はないでしょうか?

  • AJAXでのリロードに関して

    AJAXでのリロードに関して 教えて下さい。 あるページを一定の時間でリロードしたいと考えています。 その際に、javascript を使用すれば、以下のような記述で何分か単位で 自動リロードが可能ですが、それをAJAXにて実現するにはどのように記述 すれば良いでしょうか??? ***** javascript の場合 <TITLE>ページをリロードする方法</TITLE> <SCRIPT TYPE="text/javascript"> <!-- var timer = "300000"; //指定ミリ秒単位 function ReloadAddr(){ window.location.reload(); //ページをリロード } setTimeout(ReloadAddr, timer); //--> </SCRIPT> よろしくお願いします。

    • ベストアンサー
    • AJAX
  • ブラウザの「戻る」ページ遷移でリロード

    既に同種の質問がありましたが、解決されなかったようなので質問させて下さい http://okwave.jp/qa/q6381146.html ページ内に埋め込んだURL(iframeで埋め込み)の参照先が時系列で変化する為、ページ遷移等をして戻った場合にはリロードさせたいのですが、過去の質問のようにIEであれば <script type="text/javascript"> <!-- window.onunload = function(){location.reload();} --> </script> で難なくクリア出来たのですが、他ブラウザ(Firefox・Safai・Google Chrome)ではリロードされません。 公に公表されるページなので、せめて上記の3ブラウザではブラウザの「戻る」「進む」でのページ遷移時にリロードさせたいと考えています。 ちなみに、iframeに特別拘りは無いので「他の方法で埋め込めば・・・」等ありましたらお教え頂けたら幸いです。 宜しくお願い致します。

  • jQuery POST送信後のページ更新

    いつもお世話になっております。 jQuery+PHPにて、POST送信し、 戻り値の条件分岐でページを遷移させたり、 更新させたいと思っています。 ご教授願えないでしょうか。 index.php内 [ソース] $.POST('./search.php', {'code':12345'}, function(data){ if(data['type'] == '1'){ alert('見つかりません') location.href='./index.php'; } else if(data['type'] == '2'){ location.href='./edit.php; }, 'json' ); 見つかりませんのアラートを表示した後、 location.hrefだと、リロードする事なく。 またlocation.reloadにしても同様です。 $.POST外でlocation.reloadを指定すると リロードしてくれるのですが、$,POST送信してくれません。 もし不可能であれば、location.hrefで別のファイルを経由させて実施しようと思っています。 宜しくお願いします。

    • ベストアンサー
    • AJAX
  • サイトのリロード間隔を選択できるようにしたいのですが?

    java初心者です。 以下の記述でページ全体を一定間隔にてリロードを繰り返させています。★★★★★の部分がリロード間隔となりますが、その部分を1分、5分、リロード無し、といったようにボタンで選べるようにしたいのですが、何か方法はありますでしょうか?よろしくお願いしますm<_ _>m <script type="text/javascript" language="javascript"> setTimeout("location.reload(true)",★★★★★); </script>

  • リロードについて

    お世話になっております。 メタタグでリロードする時に、 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Refresh" content="1"> と書けば1秒おきにリロードされるんですけど、そのページを開いた瞬間に一回だけリロードされるようにしたいです。 一回のみリロードされる方法をよろしくお願いいたします!

専門家に質問してみよう