• ベストアンサー

リロードとの違い

こんにちわ。 リロードボタンを押した場合の処理について教えて下さい。 <BODY>のなかでonload="関数"とするとページを読込んだ時や、リロードした時に関数が 実行されると思うのすが、読込んだ時(他のページから入って来た時)は何も処理はさせたくなくて、 リロードした時だけさせたい処理があるのですが、どのようにすれば分けられるでしょうか? ご存知の方がいましたら回答お願いします。

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

  • ベストアンサー
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.3

あ,フレーム内部のリロードならOKですけど,フレーム全てが更新されると,この方法は駄目ですね。 素直に保存無しのCookie使ってセッション管理するのはどうでしょう?

kyappun
質問者

お礼

そうですか。 すべての更新は駄目なのですね。 出来ればCookieは利用したくなかったのですが、他に方法が無いのであれば どうしようもないので再度検討してみます。 何度もご回答頂き有難うございました。

その他の回答 (2)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

<script language=JavaScript> <!-- b="0"; function framewrite(a){ ++b; a.open(); a.write(b); a.write('<a href="javascript: parent.framewrite(document)">Click!!</a>'); a.close(); } function initialize(){ framewrite(Ctrl.document); framewrite(Main.document); } --> </script> <frameset cols="205,*" border=10 onLoad="javascript: initialize()"> <frame name="Ctrl"> <frame name="Main"> </frameset> 例えば,このソースだと "b" という変数 ~Main,Ctrlの各フレーム内から見ると, "parent.b" 変数~ を左右のフレームで共有しています。 これを左右のフレームでなく,リロード前,リロード後のドキュメントで共有することを考えてください。ページを一度読み込んだかどうかのフラグを共有することに応用できます。 一つのファイルしか使っていないため,例のソースが少々理解しずらいかも。

kyappun
質問者

補足

こんにちわ。   MainとCtrlでbを共有出来ると言うことは理解出来ます。 でも、リロード前とリロード後で共有ということがわかりません。 他のページから入って来た場合でも、リロードした場合でも、 bの値は初期化はされるのではないのですか? リロード前(他のページから入って来た時)もリロード後も 同じ手順の処理をするよう思えてしまいます・・・ 頭が迷路に迷い込んでしまったみたいです。 理解力が乏しく何度も質問してしまい申し訳ありません。 再度ご回答頂けると幸いです。 どうぞよろしくお願い致します。

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.1

IEでしか確認していませんが、 frameを使うと、window.parentオブジェクトを使うことでドキュメント間のデータのやりとりが行えました。

kyappun
質問者

補足

onosukleさんありがとうございます。 でも、意味がわかりません。 window.parentオブジェクトをどのように使えば、 読込んだ時(他のページから入って来た時)とリロードの 区別を付けられるのでしょうか? お手数ですが、再度ご回答頂けませんでしょうか。 よろしくお願いします。

関連するQ&A

  • リロード

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

  • アンカークリックのイベントを取得するには??

    <a href="#..." ..> のようなアンカーによる場所の移動だけのタグがあります。 これをクリックしたときに処理を行いたいです。 ただ、多量のタグに対して処理を割り当てたいので、 onClick イベントをaタグにつける方法ではない方法がないかと探しています。 例えば、<body onload="kansuu();"> のようにすればページのロード時に kansuu() を実行してくれます。 が、これではアンカーによる場所移動だけの場合にはページをリロードしないので、kansuu()は呼び出されません。 この <body onload="kansuu();"> のように、一箇所に記載するだけで、 アンカークリック時に実行されるような方法を探しています。 もし分かりましたら教えてください。 なお、クリックした際に、クリック前までのアンカーを得る方法があれば、それも教えてください。 お願いします。

  • リロード時にも<input type="reset">と同じ効能を得るには?

    検索フォームでチェックボックスAがONの間はラジオボタンBがdisableなど javascriptでいろいろな制約方法をご教示いただいたのですが リロード(更新;[F5])すると、この制約が崩れたりします。 他方、検索ボタンの脇に<input type="reset" value="リセット"> を設置してあり、これと同じ効能を、画面の再読み込み時に得たいのですが。 たぶん、<body>タグを<body onload="myreset">みたいにして、 初期状態にリセットするためのmyreset関数を作ればよいのでしょうが、 同じような需要がありそうなものですが、探し方が悪いのか 関連情報をみつけられませんでした・・よろしくお願い致します。

    • ベストアンサー
    • HTML
  • onLoad時に複数の処理を実行する方法

    <BODY>タグに「onLoad="……"」と記述することで、 ページがロードされた時にある処理をすることができますが、 ロード時に複数の処理を実行したい時はどのように記述すればよいのでしょうか? 具体的に言うと、独自に作成した複数の関数をページをロードした時に使用したいのです。 どなたかご助言お願いします。

  • VB6でフォームをリロードしたい

    プログラムを作っていて メニューFORMと処理FORMがあります。 処理ページでは色々な処理や表示を変えていき 処理が終わったあと 基本的にはメニューに戻るのですが。 連続して処理するときにいちいちメニューに戻るのが面倒なので 処理FORMを表示させたときと同じ状態にしようと思うのですが 色々なフレームやテキストなどを戻すソースを書くより いわゆるメニューからボタンを押して処理FORMを表示させたときのように やりたいのですが どのようにすればいいでしょうか? メニューFORMをSHOW して 処理FORM をアンロードして メニューFORMでタイマー処理か何かで自動的に 処理FORMを表示するコードを実行させる と言うようなことしか思いつきません。 これではどうもぱっとしないので リロードというかリフレッシュというか 色々見て なんかDim frm as New FormA と言うような物を使って やると良いようなことが書いてあったのですが、今ひとつその内容が 理解できず 困っています。 そう言った方法をご存じの方がいらっしゃいましたら教えてください よろしくお願いします。

  • リロード(追加)

    私、素人でマヌケな質問かもしれませんが、よろしくお願いします。 昨日リロードについて質問をし(No.164657)、a-kumaさんから回答をいただいて 解決したと思ったので質問を締め切らせていただきました。 ところが、NNではいいのですが、IE5.5で確認したところ、リロードが実行されるたびに 「情報を再送信しないと、ページを更新できません。「再試行」をクリックして 情報を送信するか、「キャンセル」をクリックして表示しようとしていたページに 戻ってください。」 というアラートが出てしまいます。 これを表示させないでリロードさせるさせるにはどうしたらいいのでしょうか? もしかすると JavaScript の問題というより、ブラウザの設定の問題なのかも しれませんが・・。 よろしくお願いします。

  • リロードの防止法

    PHPとmysqlで簡単なwebを作成しています。 F5等で再読み込みを行うと、 各SQLも実行されてしまうので困っています。 ある程度のものは時間を判断して、 その時間以内には 「再読み込みできない」というページに リダイレクトさせる事で回避できました。 マスタ管理画面などにはどいういった処理を書いて リロードを防止すればよいか悩んでいます。 分かる方、教えてください。

    • 締切済み
    • PHP
  • IEで読込完了・リロード時にウィンドウを最下部にスクロールする

    IEで読込完了・リロード時にウィンドウを最下部にスクロールするにはどうしたらよいのでしょうか? scrollTo(0,innerHeight);を使おうとしたのですがinnerHeightはIEに対応していませんでした。 onLoadで関数を読み出すのならその関数の中身だけでもいいので教えてください。

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

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

  • 関数を呼び出すHTMLタグ<body onload="hoge()">について

    ほぼ独学でJavaScriptを学んでいるので、一般的なコード(HTML含め)の書き方が分かりません。 JavaScriptでは、ボタンや画像をクリックすると動作する、 というものが多いですが、そうではなくて、 (それはonclick等で関数を呼び出せば良いことは分かります) 時計のように、アクセスした瞬間から実行されるプログラムを複数書きたい時は、 どのようにするのが妥当でしょうか。 <body onload="hoge()">では、関数hoge()しか実行されないことになりますよね。 そうではなくて、hoge()以外にもいくつかの関数を実行したい時はどうするのが一般的ですか? ここでC言語のように、hoge()をmain関数(int main(void){})のような扱い方にすると、 hoge()関数内で呼び出されている関数も呼び出されることになりますが、そのような書き方で良いですか? アクセスの効率の良さから考えて、他に良いやり方はあるでしょうか。 ・・・前に困ったので<body>タグを2つ付けて2つの関数をonloadアトリビュートで呼び出すという、 奇々怪々なことをやってみて、それでIE7,FireFox3で動いていたので驚いたんですが、 そんなやり方はさすがに御法度ですよね(笑)。 答えにくい質問だと思いますが、アドバイスお願いします。