• ベストアンサー

アクティブなウィンドウのみ、自動更新がしたい

現在、複数のA.aspがいくつか立ち上がっています。 A.aspでは、3分毎に自動更新を行うようにしているのですが、 全てのA.aspで自動更新がかかってしまい、負荷が大きくなってしまいます。 そこで、アクティブになっている画面のみ自動更新を行いたいのです。 onforcusやonblurなどを使用してみましたが、どうしてもうまくいきません。 よろしくお願いいたしますm(_ _)m

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

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.3

wolfwoodです。 >背面の画面をアクティブにした瞬間に >一度更新したいのですが・・ うーん、javascriptだけだとリロード時に値が受け渡せない(保持できない)のでフラグなどで処理分けができないのです。つまり、onFousの場合に実行できるリロード処理は一つだけとなります。(リロードするとまた最初からの処理になるためです) ASPで値(フラグ)を持たせて、アクティブ時にフラグを立てて、切り替わった時にフラグ判定してリロードするといった方法ぐらいしか思いつきません。 javascriptで値を保持するのにもCOOKIEやGET送信からURLを解析して値を得る方法などがありますが面倒です。 イベントハンドラでもっと細かい設定ができれば良いのですが・・・。

mybigbaby
質問者

お礼

何度もご回答ありがとうございます!! やはりそうですよね・・・。 しかし、背面の画面を更新できないだけでも十分な効果がでそうです。 本当にありがとうございましたm(_ _)m

その他の回答 (2)

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

#1のwolfwoodです。 確かに下に書いた方法だと、アクティブでなくなった場合でもタイムアウトまでの時間が残っていた場合読み込まれてしまいます。 この場合、アクティブでなくなった時にsetTimeoutの設定をクリアすればよいと思います。同じくIE5.5で確認済です。 例) <HTML> <HEAD> <SCRIPT> function aaa(ss){ if(ss==1){ id = setTimeout("location.reload()", 180000); }else if(ss==2){ clearTimeout(id); } } </SCRIPT> </HEAD> <BODY onFocus="aaa(1)" onBlur="aaa(2)"> </BODY> </HTML>

mybigbaby
質問者

補足

ありがとうございます! できました。 書き忘れていたのですが、 背面の画面をアクティブにした瞬間に 一度更新したいのですが・・・ もしよろしかったら、よろしくお願いしますm(_ _)m

  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.1

BODYタグでonFocusイベントハンドラを用いれば可能だと思います。 IE5.5で確認済です。 (onforcusではなくonFocusです。) 例) <HTML> <HEAD> <SCRIPT> function aaa(){ id = setTimeout("location.reload()", 180000); } </SCRIPT> </HEAD> <BODY onFocus="aaa()"> </BODY> </HTML>

mybigbaby
質問者

補足

つづりを書き間違えてしまいました(^。^; 最初私もこれでやってみたのですが、 これだと、背面にいった場合にも自動更新がかかってしまいました。 背面にいった場合には自動更新をしたくないのですが・・・

専門家に質問してみよう