こんにちは

いつもお世話になっています
表題の通りページを読み込んだ後にすぐ
一回だけリロードさせたいのですが
どのような方法があるでしょうか?
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ユーザーが更新ボタンを押さなくても自動的にリロードさせるには?

ブラウザの更新ボタンを閲覧ユーザーが押さなくても自動的にリロードさせる方法はありますか?

メニューを取っ払った小ウインド内を、ユーザーが閲覧するたびに更新させたいのですが、メニューを取っ払っているため、更新ボタンもありません。

良い方法をご存知の方がいましたら、教えて下さいませ。

Aベストアンサー

> これだと、いくらスクリプトを埋め込んでいても、更新されない可能性がありますかね?

はい、セッションクッキーはブラウザを終了するまで保持されるので、ブラウザは一度閉じないとだめです。しかも、クッキーをセットしたウィンドウだけでなく、同じブラウザのウィンドウは全て閉じないとクッキーが消えないことがあるようです。

親側での nWin.location.reload(true); でうまく行くようなら、こちらの方が面倒がなくていいでしょうね。

Qページ読み込み時に自動的にsubmitさせる方法

過去のPHPでの質問
http://www.okweb.ne.jp/kotaeru.php3?q=483327
の中で出てきた

>hiddenでデータ定義しておいて
>Javascriptでページ読み込み時に自動的にsubmitさせたらいいかも。

POSTでデータを送るためにこれを実現したいと思っているのですが自動的にsubmitさせる方法がわかりません。

ご存知の方がおられましたらアドバイス宜しくお願いします。

Aベストアンサー

<BODY onLoad="document.F.submit();">
とやれば、このファイルがロードされた時に、
このファイル内の
<FORM NAME=F>~</FORM>
と定義されたFORMの内容がsubmitされると思いますが・・・。

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

Q無限ループ

教えてください。

画面をリサイズすると画面再表示するようにしたいのですが、
下記のソースでは
IE8で無限ループになります。
どこがおかしいのでしょうか?
どのように直せばいいのでしょうか?

jQuery(document).ready(function () {
var timer = false;
$(window).on("load resize", ReLayout);

function ReLayout(event) {
var _width = $(window).width();
var winWidth_resized;

if(event.type == 'resize') {
if (_width > 767) {
if (timer !== false) {
clearTimeout(timer);
}
timer = setTimeout( disp, 200);
}
}
}
function disp(){
location.href = location.href;
}
});

教えてください。

画面をリサイズすると画面再表示するようにしたいのですが、
下記のソースでは
IE8で無限ループになります。
どこがおかしいのでしょうか?
どのように直せばいいのでしょうか?

jQuery(document).ready(function () {
var timer = false;
$(window).on("load resize", ReLayout);

function ReLayout(event) {
var _width = $(window).width();
var winWidth_resized;

if(event.type == 'resize') {
if (_width > 767) {
if (timer !== false) {
...続きを読む

Aベストアンサー

通常のブラウザはリサイズすればレイアウトし直すと思いますので、何をなさりたいのかよくわかりませんが…

HTMLのload時に条件判定でdisp()が実行されるような状態の時は無限ループになる可能性があります。
個々のブラウザの挙動を確認してはいませんが、location.href = location.href;でリロードされるようなブラウザであれば、ロードする毎に再ロードすることになるのでは?

簡略化すれば以下のスクリプトとほぼ同じになるので…
 window.onload = disp;

load時のイベント処理として実行するのをやめれば、とりあえず無限ループにはならないと思いますが?(リサイズ時のみ動作するようにするという意味です)


しかしながら、そもそもが再読み込みする必要が無いのではないかと思いますけれど…

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

ブラウザの「戻る」ボタンを押して前のページに戻った時に1回だけページを
リロードさせたいのですが、IEでは下記のようにすれば上手く出来ました。

<script type="text/javascript">
<!--
window.onunload = function(){location.reload();}
-->
</script>

しかしながら、上記では他のブラウザ(Firefox・Opera・Safai・Google Chrome等)では
リロードされません。

全てのブラウザで上手くリロードさせる方法はないでしょうか。

宜しくお願い致します。

Aベストアンサー

window.onbeforeunload = function(){location.reload(true);}

Q別フレームのページを更新させたい

質問させてください。
Windows IE6.1で試しています。


左右に分かれたフレームのページをつくり、
右ページにメニュー、左ページに掲示板を作っています。
左ページを更新したら、同時に右ページも更新させたいのですが、
それの方法がわかりません。

一応、下記の通り試してみましたが、更新しませんでした。

function autoOpen(){
window.open("menu.htm","menu");
}

左ページの更新時、
BODYを下記のとおり書き換えています。

<body onLoad="autoOpen()">

あと、
<body onload="parent.frames.menu.reload(true)">
も試してみましたが、やはりダメでした。

何卒宜しくお願いします。m(_ _)mペコリ

Aベストアンサー

まずは、始めまして^^

早速ですが、質問の内容を見る限り、条件として左右にフレームが分かれた状態で、双方からページを変更出来る事を実現したいと言うことでよろしいのでしょうか?
(プラスしてポップアップウィンドウも更新させたいのかな??)
以下の説明は、親ウィンドウは左に掲示板(bbs)、右にメニュー(menu)、ポップアップウィンドウ(popup)でもメニューを表示するとして説明させて頂きます。


初めにフレーム間の操作についてですが、質問に最後に書かれている次の文は非常に惜しいですね
parent.frames.menu.reload(true)
非常に惜しいのですが、これでは多分エラーが発生してしまうと思います。

一つ記述を忘れている為に、発生しているエラーなのですが、その記述とは、「location」です。

日本語で訳すと、parent(親)の[frames(宣言されているフレーム中)]で「menu(menuと言うフレーム)」の「location(現在位置)」を「reload(更新)」してあげるのです。

つまり、以下の文に直せば上手く行ってくれると思います。(menu=フレーム右側、このScriptは掲示板ページから実行する物とします)

parent.frames.menu.location.reload(true)

付け加えて書いておきますが、framesは記述しない以下の文でも同様の動作をしてくれます。

parent.menu.location.reload(true)


次にポップアップウィンドウから親ウィンドウ内を操作する方法ですが、今回は親ウィンドウはフレーム単位で左右に分割されていると言うことなので、ポップアップウィンドウから一部のフレームを操作するのは、少し複雑になります。
以下に最初に説明した親フレームのmenuを更新するのと同様の動作をする例を書いてみますね^^
(この例ではポップアップウィンドウから親フレームのmenuフレームを更新します)

opener.menu.location.reload(true);

これで、ポップアップウィンドウからもmenuを更新することが出来ました。

以上で解説を終わります。
参考になったか分かりませんが、ホームページ作り、頑張ってください p(^-^)q

まずは、始めまして^^

早速ですが、質問の内容を見る限り、条件として左右にフレームが分かれた状態で、双方からページを変更出来る事を実現したいと言うことでよろしいのでしょうか?
(プラスしてポップアップウィンドウも更新させたいのかな??)
以下の説明は、親ウィンドウは左に掲示板(bbs)、右にメニュー(menu)、ポップアップウィンドウ(popup)でもメニューを表示するとして説明させて頂きます。


初めにフレーム間の操作についてですが、質問に最後に書かれている次の文は非常に惜しいですね
...続きを読む

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

Qリロードについて

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

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

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

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

Aベストアンサー

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

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

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

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

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

Qcssで「下よせ」ってどうやっていますか?

フロートのレフト、ライトはいいとして、

あるボックス要素内(A)に異なるボックス要素(B)をいれます。
この(B)を(A)の一番そこにはりつかせたい時にどうすれば
最もよいのでしょうか?

いいアイデアをご教授ください。

Aベストアンサー

こんなのはどうかな?

position: absolute;
bottom: 0px;

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">


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

人気Q&Aランキング