こんにちは

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

このQ&Aに関連する最新のQ&A

A 回答 (7件)

では、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度アクセスに
行きます。
    • good
    • 0

akijiroさんの回答、なかなか参考になりますが、気になった点が


ありましたので失礼ながらちょっとコメントさせていただきます。

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

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

「専門家」ということでしたのでちょっとぐらい突っ込んでも平気だろう、
と思い、なんだか細かいことを指摘してしまいました。お気を悪く
されたらお詫び申しあげます。
    • good
    • 0

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はオフにしています。

簡単な回答ですいません。
他に気づきましたらまた書きます。
    • good
    • 0

こんばんわ。


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

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

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

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

根本的に1回だけリロード処理が必要な時点で


設計ミスのような気がするんですが・・
#JavaScript無効にしてあったらどーするんだろう、とか

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

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

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

参考まで

この回答への補足

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

ご指摘のように
setTimeoutで試してるのですが、上手くいきませんね
何故でしょうか????? (>_<)

補足日時:2001/05/18 18:04
    • good
    • 0

<BODY onLoad="location.reload();">



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

参考まで

この回答への補足

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

補足日時:2001/05/18 16:10
    • good
    • 0

どうしても同じページをリロードしたいのですか?


とりあえず別に似たようなページを作ればいいだけなら
別のページをリロードすればいいだろうし、

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

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qリロードについて

お世話になっております。
メタタグでリロードする時に、

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Refresh" content="1">

と書けば1秒おきにリロードされるんですけど、そのページを開いた瞬間に一回だけリロードされるようにしたいです。

一回のみリロードされる方法をよろしくお願いいたします!

Aベストアンサー

一回だけ、というのは、
「開いたときにリロード」か
「一回しかリロードできない」か、分かりません。

前者の方がよく使うと思うので、そちらを解説します。

<script>location.reload()</script>

このタグを埋め込むだけでよいと思います。
ちなみに、カウンターを二重カウントさせる、などの目的ならカウンターの後、もしくは</body>の直前に入れるといいと思いますよ。

後者のほうは、deagleさんが解説してくださっています。

Qlocation時に複数のclassを適用させたい

次のようなフォームの部品があります。
<form name="formname" class="searchform">
    <input type="text" name="query" class="searchbox">//
    <input type="button" value="検索" class="button" onclick="search()" />
</form>

http://www.com/index.phpにテキスト入力フィールドとボタンがあります。
テキストエリアに[任意の文字列]を入れてボタンを押すと、

<li class=list><a class=link href="http://www.com/search.php?que=[任意の文字列]">リンク</a></li>

というリンクをクリックしたときと同じ動作を引き起こすようにしたいです。
form action="~"をつけてGETメソッドで送信するのではなく、あくまでもテキストボックスの値を受け取って、
それをクエリとしたhrefをlocateしたいのです。

<script type="text/javascript">
function searches(){
var str1=document.formname.query.value;
href = "http://www.com/search.php?que="+str1;
location.href = href;
}
</script>

と自分でも書きましたが、これでは
<a href="http://www.com/search.php?que=[任意の文字列]">リンク</a>
をクリックしたときと同等になってしまいます。

liのclassとaのclassが適用されません。
この2つのclassは、別のjavascriptと連動しているため、どうしても
<li class=list><a class=link href="http://www.com/search.php?que=[任意の文字列]">リンク</a></li>
をクリックしたときと同様の動作を引き起こしたいのです。

上のフォームのbuttonをクリックすることで、このような動作を起こす方法を教えてください。
よろしくお願いします。

次のようなフォームの部品があります。
<form name="formname" class="searchform">
    <input type="text" name="query" class="searchbox">//
    <input type="button" value="検索" class="button" onclick="search()" />
</form>

http://www.com/index.phpにテキスト入力フィールドとボタンがあります。
テキストエリアに[任意の文字列]を入れてボタンを押すと、

<li class=list><a class=link href="http://www.com/search.php?que=[任意の文字列]">リンク</a></li>

というリンクをクリックした...続きを読む

Aベストアンサー

>liのclassとaのclassが適用されません。
という意味がわかりませんが、、、

>をクリックしたときと同様の動作を引き起こしたいのです。

<form action="search.php">
<input type="text" name="que">
<input type="submit" value="送信">
</form>

としておけば、「search.php?que=任意の文字列」にジャンプします。

Qperl チャット リロード

chatpad(http://chatpad.jp/)というサイトを利用してみて思ったのですが、リロードっていつしているのでしょうか?(ブラウザのステータスバーを見る限りは一定の間隔でしかリロードしていなくて、リロードしていない時でも発言は更新される)
perlの勉強をしていて、チャットを作ろうと思ったのですが、色々なサイトを調べてみても、「相手が発言したのかどうかを調べるためにはリロードするしかない。」みたいに書いてあったのですが、リロードなしでも相手の発言を取得して随時表示させていくことができるのでしょうか?(できるなら、そのようなプログラムを書きたいです)
javascriptとperlだけで実現するチャットの場合、どのようなアルゴリズムが一番スマートですか?詳しく教えてください。お願いします。

Aベストアンサー

そのチャットを試したわけじゃないけど紹介記事には「Ajaxを利用しており」って書いてありますね。
http://gigazine.net/index.php?/news/comments/20090715_chatpad/

単純に内部的に定期リロードしてるのか・・・うまく作れば他者の発言に合わせて非同期でロードもできるのかな。
http://www.google.com/search?q=chat+ajax+perl&lr=lang_ja

QAjaxで読み込んだHTMLページに書き込んだscriptの実行方法

Ajaxを利用した読み込んだHTMLページに記載された<script>???</script>内のプログラムを.onLoadのような方法で実行する方法はあるのでしょうか?

Aベストアンサー

参考URLどうぞ。

JavaScriptとしてゆこうな文字列を取得できれば、eval評価してしまえば普通に使えます。

それをどう実行するかは読み込む対象が確定してるかどうかなどで、色々変ってくると思います。
対象が関数でないならevalで即実行されますし。

参考URL:http://questionbox.msn.co.jp/qa3708714.html

Qjqueryを使って非同期通信で10秒ごとにリロード

jqueryを使って非同期通信で10秒ごとにリロードをさせようと
しているのですが、

setInterval(function(){
$(document.body).load("./hoge.php");
},10000);
とすると最初にリロードした10秒と次にリロードされた10秒が
一緒にカウントされているみたいで、リロードの間隔が
めちゃくちゃになってしまいます。
どなたかご教授ください。
よろしくお願いいたします。

Aベストアンサー

詳しいことは調べていないので分かりませんが、ロードに時間がかかっているために、間隔がめちゃくちゃに見えるだけではないでしょうか?

あと、setIntervalには色々と面倒があるようなので、それもチェックしてみてください。
http://www.mapee.jp/wlh/javascriptsetinterval.html

Q別窓ウィンドウから親ウィンドウの操作でopener.location.hrefで親ウィンドウに渡せる文字数について

非常に困っています。良かったら教えて下さい。
サブウィンドウズを閉じたときに親ウィンドウにある値を
渡して飛ばしたいのですが、かなり項目数が多くて、
javascriptエラーになります。
渡せる文字数は、何文字いないとかいう規定はあるのですか?
教えて下さい。

もし、あるのであれば、代替案はありますか?

Aベストアンサー

サンプル作ってみた

---"main.html"---
<form onsubmit="
window.name='main';
window.open('sub.html', '_blank');
return false;
">
<input type="submit" value="sub">
</form>


---"sub.html"---
<form action="http://www.google.com/search" target="main" >
<input name="q" value="javascript">
<input type="button" value="検索" onclick="
this.form.submit();
window.close();
">
</form>

Qリロード禁止

現在、CGIゲームを製作している者です

名前と得点を
http://www.~~~~~~/index.php?name=name&score=285
のようにしているのですが、この状態でリロードすると連続投稿みたいな感じになります

例えば
普通の状態
名無し 198点

リロードすると
名無し 198点
名無し 198点

のようになってしまいます

JavaScriptを使えば出来そうなのですが、わかりません

リロードできないようにするには、どうすればよいか教えてください

Aベストアンサー

>JavaScriptを使えば出来そうなのですが
JavaScriptでリロードを制限することはできません。

>現在、CGIゲームを製作している者です
CGI側がいじれるならばCGIでなんとかするしかないと思います。

Qreloadの方法

Timeout関数でreloadしたいのです!教えてください!

now.jpgってファイルが自動更新されていきます。
そこで、下のような関数で再読み込みするんですが、見た目再読み込みしているのですが、ファイルが変わりません・・・。(ブラウザでreloadすると更新されます)

なので、Timeout関数でreloadができれば更新できるのではと思うのですが、どのオブジェクトなのかもわかりません・・・・。

助けてくださいーい。

function disp(){
t=setTimeout("disp()",3000);
top.main.document.open();
top.main.document.clear();
top.main.document.write("<HTML><BODY bgcolor = '#000000' text = '#FFFFFF'><IMG SRC='now.jpg'></BODY></HTML>");
top.main.document.close();
w=1;
}

Timeout関数でreloadしたいのです!教えてください!

now.jpgってファイルが自動更新されていきます。
そこで、下のような関数で再読み込みするんですが、見た目再読み込みしているのですが、ファイルが変わりません・・・。(ブラウザでreloadすると更新されます)

なので、Timeout関数でreloadができれば更新できるのではと思うのですが、どのオブジェクトなのかもわかりません・・・・。

助けてくださいーい。

function disp(){
t=setTimeout("disp()",3000);
top.main.document...続きを読む

Aベストアンサー

リロードとはちょっと違う話しになってしまうけど、・・

  リロードがきちんとされている状態でも、画像が変わらない場合はキャッシュが採用
  されている場合があります。
  その場合は、src="画像ファイル?変数名=可変な値"をすればキャッシュ防止となります。
  ※「可変な値」としては YYYYMMDDHHMMSS とかがいいでしょう。
   この値はjavascriptの日付処理関数でつくれますよね。

一応関連事の参考までに。
がんばって下さいね。

Qサイトのリロード間隔を選択できるようにしたいのですが?

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

<script type="text/javascript" language="javascript">
setTimeout("location.reload(true)",★★★★★);
</script>

Aベストアンサー

おっと!!  早とちりでしたぁ!! すんません。

質問文にちゃんと書いてあるのに、勝手に勘違いしちゃってました。
(リロードを繰り返すのですね。提示のものも、初期値を1分とかに設定しておけばリロードしますけど?・・・ってのでは、インチキかな)  ^^)ゞ

No3様のご指摘のは、うっかりしてました。ご指導ありがとうございます。
う~ん、設定変えたらキャンセルして・・ってやってると、いつまでたってもリロードしなくなっちゃう可能性も・・

・・ってことで、設定した内容でリロードを繰り返すように修正しました。
(長くなっちゃったけど・・)
*時間の計測は、ロードした時から始めますが、「なし」を設定すると一旦
 キャンセルされて、他の設定時に再計測となります。
*クッキーの有効期間を設定していないので、ブラウザが終了するまで
 有効となります。これを、次のときも有効にしたい場合は、有効期限を
 指定してクッキーを設定すればよいです。

<html>
<head>
<script language="javascript">
var delay=0; var cnt=0; var flg=false;

window.onload=function(){
if (document.cookie){
var ck = document.cookie + ';'; // クッキーから値を取得
var st = ck.indexOf('interval=');
if (st>-1){
var ed = ck.indexOf(';',st);
delay = unescape(ck.substring(st + 9, ed));
}
}
// セレクターをセット
var sl = document.getElementById('hoge');
var e = sl.options;
for (i=0; i<e.length; i++){
if (e[i].value==delay){sl.selectedIndex=i;}
}
set_timer(); //カウンターセット
}
function set_timer(){
if (!flg && delay>0){
flg=true;
cnt = 0;
t_id=setInterval('timer()',1000);
}
}
function timer(){
cnt++;
if ((delay>0) && (cnt>=delay*60)){location.reload(true);}
if (cnt>301){clearInterval(t_id); flg = false;}
}
function set(e){
delay = e.options[e.selectedIndex].value;
document.cookie = 'interval=' + escape(delay); // クッキーへ書き込み
set_timer();
}
</script>
</head>
<body>
リロード:
<select id="hoge" onchange="set(this);">
<option value="1">1分</option>
<option value="5">5分</option>
<option value="0" selected>なし</option>
</select>
</body>
</html>

おっと!!  早とちりでしたぁ!! すんません。

質問文にちゃんと書いてあるのに、勝手に勘違いしちゃってました。
(リロードを繰り返すのですね。提示のものも、初期値を1分とかに設定しておけばリロードしますけど?・・・ってのでは、インチキかな)  ^^)ゞ

No3様のご指摘のは、うっかりしてました。ご指導ありがとうございます。
う~ん、設定変えたらキャンセルして・・ってやってると、いつまでたってもリロードしなくなっちゃう可能性も・・

・・ってことで、設定した内容でリロードを繰り返...続きを読む

Qネスケの時リロード

ブラウザがネスケの場合、自動的にリロードさせたいと思っています。
また、ウィンドウのサイズを変えた時にもリロードさせたいのです。

いろいろ試してみているのですが、行き詰まってしまったので助けてください。
宜しくお願いします。

Aベストアンサー

ウィンドウのサイズを変えた時にリロードさせるには、

window.onresize = rebuild;
function rebuild(){ location.reload();}

のようにして、resize イベントの発生時にリロードすればいいと思います。
Netscape 4.x のみ処理させたい場合は

if (document.layers)

という条件文を付け加えます。詳細は
http://www2s.biglobe.ne.jp/~club_tom/java-kouza/sample/ienn/ienn-no1.htm
や参考サイト
http://www.openspc2.org/reibun/javascript/special/012/
をご覧ください。

参考URL:http://www.openspc2.org/reibun/javascript/special/012/


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報