synya
@synya

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

オフライン時のJavascriptの動作について

初めまして。拙い質問で申し訳ありません。

一度読み込めばオフラインでも動作するプログラムにしたいです。

Javascriptにiframeを更新をさせるプログラムですが、オフラインでは動作しなくなります。
動きとしては、オンラインでは一定時間後に自動更新されるものが、オフラインでは停止してしまいます。

一旦WEBのページを開けば、オフラインであってもコードを読み込んでいるので、
HTMLやCSSはそのまま表示され続けます。

1.Javascriptも一度読み込めれば、そのまま動作するのではないでしょうか。
 PHPなどのサーバサイドとは違って、という意味です。

2.下記にコードを載せますが、外部のファイル(iframe)を読み込もうとするからなのでしょうか。
だとJSのfor文などで時間設定ができれば、外部ファイルを使用する必要がなくなるため、それでも良いかとは思うのですが、for分で数秒後に実行するようなタイマー設定は可能なのでしょうか。

// フレームをreload
function doReloadTheFrame() {
// フレームのDOM要素を取得
var iframe = document.getElementById('frametarget');
// フレームをreload
iframe.contentWindow.location.reload(true);
}
window.addEventListener('load', function () {
// x秒ごとに、フレームをreload
setInterval(doReloadTheFrame, 5000);
});

以上、恐縮ですが、1.Jsとサーバの関係と、2.のiframeではなくfor文だと動作するのか、
という2点、ご教示いただけないでしょうか。

0

2Answer

抜粋
iframe.contentWindow.location.reload(true);

コードの上記部分で、iframeがリロード(パラメーターがtrueなのでスーパーリロード)
されているので、オフラインではiframの中が読み込まれていないということでは
ないでしょうか?

0Like

Comments

  1. @synya

    Questioner

    @Yamazin樣
    ご回答をいただきありがとうございました。
    falseでも試しましたがやはり更新をする以上、オフラインでは止まってしまいました。
    なので、iframeはやめて、プログラムのみを書き換えるように発想を変えました。
    setIntervalという組み込み関数を用いて、なんとか自動更新の関数を作ることができました。
  1. その通りです。そのまま動作します。
  2. オフラインであればiframeは読み込まれないため、iframe.contentWindowはnullです。そのため再読み込みを意図するならばiframe.srcを変更したほうが良いと思います。また、「iframeではなくfor文だと動作するのか」についてはiframeをどのような意図で使用しているか不明なので回答できかねます。
0Like

Comments

  1. @synya

    Questioner

    @_y_s様
    ご回答いただきありがとうございました。
    特に1.のご回答を頂けたことで、Jsの動作について自信がなかったので、確信を持って開発できました。
    結局、iframeや更新という発想はやめて、プログラムのみを書き換えるように発想を変えました。
    setIntervalという組み込み関数を用いて、なんとか自動更新の関数を作ることができました。

Your answer might help someone💌