-PR-
解決済み

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

  • 困ってます
  • 質問No.77766
  • 閲覧数5062
  • ありがとう数2
  • 気になる数0
  • 回答数7
  • コメント数0

こんにちは

いつもお世話になっています
表題の通りページを読み込んだ後にすぐ
一回だけリロードさせたいのですが
どのような方法があるでしょうか?
location.reload();
だと永遠にリロードしてしまいます・・・
通報する
  • 回答数7
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.5
レベル10

ベストアンサー率 64% (73/113)

では、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度アクセスに
行きます。
関連するQ&A
-PR-
-PR-

その他の回答 (全6件)

  • 回答No.2
レベル12

ベストアンサー率 65% (242/372)

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

でご要望の処理が出来ると思います。

参考まで
補足コメント
noname#38849

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


  • 回答No.1
レベル10

ベストアンサー率 18% (35/185)

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

どうしても同じページにこだわるなら、cokkieでフラグをたてるのが簡単かな?
でも、このときはクッキー無効にしてる人がいることを考えてやらないと
大変なことになるからきをつけてね。
あとは、CGIなんかと連携してhiddenタグに埋め込んでおくとか。
  • 回答No.3
レベル12

ベストアンサー率 65% (242/372)

根本的に1回だけリロード処理が必要な時点で 設計ミスのような気がするんですが・・ #JavaScript無効にしてあったらどーするんだろう、とか とりあえず、他に思いついたのは <script type="text/javascript"><!-- rload = setTimeout( "location.reload()", ...続きを読む
根本的に1回だけリロード処理が必要な時点で
設計ミスのような気がするんですが・・
#JavaScript無効にしてあったらどーするんだろう、とか

とりあえず、他に思いついたのは

<script type="text/javascript"><!--
rload = setTimeout( "location.reload()", 100 );
clearTimeout( rload );
// --></script>

とかどうでしょう?
うまくいくような気はしますが未確認です(苦笑)

参考まで
補足コメント
noname#38849

解答ありがとうございます
javaScriptが無効にしてあったらお手上げですね ^^;

ご指摘のように
setTimeoutで試してるのですが、上手くいきませんね
何故でしょうか????? (>_<)
投稿日時 - 2001-05-18 18:04:30
  • 回答No.4
レベル9

ベストアンサー率 67% (25/37)

こんばんわ。 私も、どうしても1回だけ、何のアクションも起こさずに リロードしたいならクッキーを使うしかないと思います。 <body>onLoadを使うにしても、再読み込みが入ると永遠に 繰り返してしまいますからね。 要するに、どこかに変数なり、一度リロードしたと言うフラグを 持たないことには、永遠に繰り返されてしまうと思います。 count=getCookie(" ...続きを読む
こんばんわ。
私も、どうしても1回だけ、何のアクションも起こさずに
リロードしたいならクッキーを使うしかないと思います。
<body>onLoadを使うにしても、再読み込みが入ると永遠に
繰り返してしまいますからね。
要するに、どこかに変数なり、一度リロードしたと言うフラグを
持たないことには、永遠に繰り返されてしまうと思います。

count=getCookie("COUNT");
if(count==null){
setCookie("COUNT",1);
location.reload();
}

上の記述が正しいかどうかは、ちょっとわかりませんが、考え方として
クッキーから変数COUNTを取得し、countに代入する。
そんで、countがnullならまだリロードしてないので、クッキーに
COUNT=1と言うデータを保存する。
それから、リロードを入れると、2回目以降は、countがnullでないので
if文の中を通らないと言う風になる。(予定)

テストも何もしてないので、これで成功するかは、わかりませんけど
一つの考え方として提案させていただきました。
クッキー自体を無効にされたら、その地点でおしまいですけど^^;;
がんばってください。
  • 回答No.6
レベル5

ベストアンサー率 25% (2/8)

javascriptではなく、 perlではどうですか。 location.xxx.cgiで読み込んで、 cgiがそのファイルを読み込むときに置換とか。 間違っていたらごめんなさい。 即席で作ったソースです。 $file_thanks ="./xxx.html"; print "Content-type: text/html\n\n" ...続きを読む
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はオフにしています。

簡単な回答ですいません。
他に気づきましたらまた書きます。
  • 回答No.7
レベル10

ベストアンサー率 64% (73/113)

akijiroさんの回答、なかなか参考になりますが、気になった点が ありましたので失礼ながらちょっとコメントさせていただきます。 CGIスクリプトで切り分けるというのはいいアイデアですね。しかし、 URLを変えていいのでしたら、onlord=location.reload があるのと ないのと、二つのほぼそっくりなHTMLファイルを用意すれば済む 話ですね。 それからサンプルのスクリプトで ...続きを読む
akijiroさんの回答、なかなか参考になりますが、気になった点が
ありましたので失礼ながらちょっとコメントさせていただきます。

CGIスクリプトで切り分けるというのはいいアイデアですね。しかし、
URLを変えていいのでしたら、onlord=location.reload があるのと
ないのと、二つのほぼそっくりなHTMLファイルを用意すれば済む
話ですね。
それからサンプルのスクリプトですが、読みこむファイルにflockを掛けるのは
無駄だと思うのですが、なにか意味があるのでしょうか。

リファラーもいい方法に思えますが、ブラウザの中にはリロードした
ときにちゃんとdocument.refererを置きかえるかどうか、怪しいものが
あります。また、リロード時にundefinedになるのを期待するとしたら、
ブックマークで飛んできたときとの区別がつかないと思うのですが。

「専門家」ということでしたのでちょっとぐらい突っ込んでも平気だろう、
と思い、なんだか細かいことを指摘してしまいました。お気を悪く
されたらお詫び申しあげます。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ