- ベストアンサー
javascriptに関する質問です。(初心者向け)
- ユーザーのローカルPC時計の0秒に合わせて自動リロードする方法を教えてください。
- 現在、ユーザーが訪問した瞬間から60秒経過するごとにページを変更していますが、時計の0秒に合わせてページを更新したいです。
- 既存の一定時間経過でのリロードの方法ではなく、ユーザーのローカル時計を参照してリロードする方法を知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
毎分0秒に合わせる為に1秒毎にチェックを入れると 重くなりますので、開いた際に現在秒を取って それが60秒になる際にリロードをする方がいいのでは ないでしょうか。 function ReloadAddr(){ window.location.reload(); } now = new Date(); sec = now.getSeconds(); var inter = 60 - sec; setTimeout(ReloadAddr, inter*1000); 未テスト&#1さんの処理を流用 また、iframe内ページの表示を制御する場合は 親からiframe内ページに対して制御を行う方がいいように思います。 親から制御する場合は、同様に最初に現在秒を取って 60秒になる時にiframe内をリロードし、あとは60秒おきに リロードすればほぼ0秒にリロードさせる事は可能です。 function ReloadiAddr(){ document.iframe名.location.reload(); } now = new Date(); sec = now.getSeconds(); var inter = 60 - sec; setTimeout( function(){ ReloadiAddr(); setInterval(ReloadiAddr, 60000); }, inter*1000); こんな感じでしょうか。 iframeの呼び出し方どうだったろうか・・・ document.iframe名.****でいけたはず 同じく未テスト まぁ、イメージではこんな感じです。
その他の回答 (1)
- MRT1452
- ベストアンサー率42% (1391/3293)
単に思いつきで書きますが。 ・時間間隔を1分→1秒 ・実動関数内で秒を取得(getSeconds()) ・ifで秒が0かチェックし、0ならばwindow.location.reload();を呼び出す。 スクリプトが頻繁に動く事になりますが、秒を確認するのであれば、毎秒チェックする形にしないと、取れないかと。 現在の内容ではチェックできる最小の時間単位は分なので。 var jikan = "1000"; var ldate; var sec; function ReloadAddr(){ ldate= new Date(); ←現日時の取得 sec = ldate.getSeconds(); ←秒の取得 if (sec == 0){ ←0秒チェック window.location.reload(); } } setTimeout(ReloadAddr, jikan); ※文法チェック、テスト等は全くしてません。
お礼
お礼欄をお借りします。 このたび、全て解決の運びとなりましたのでご報告いたします。 まず、0秒目のリロードは解決し、その後、No2さんのお教え頂いた 「親ページでのリロード」は、getElementByIdを利用する事で 実行出来ました。 このたびはありがとうございました。
お礼
ご回答ありがとうございます。 当初の希望通り、0秒目のリロードが出来るようになりました! ただ、教えて頂いた「親ページからiframeをリロードする」点は 書いて頂いたソースのコピペでは上手くいきませんでした… iframeのタグは <iframe id="yasai" name="yasai" src="yasai.php"></frame> としているので、書いて頂いた >document.iframe名.location.reload(); の部分を、 document.yasai.location.reload(); もしくは、 document."yasai".location.reload(); かなぁと思い挑戦してみるも、どちらも自動リロードは出来ませんでした。
補足
すみません、補足が該当するコメントでしたのにお礼の欄に掲載してしまいました。 宜しくお願い致します。