0

以下のスクリプトを使用して、イメージ test.png をダウンロードしてインターネット接続を確認しています。私が抱えている問題は、画像が一度しかダウンロードされないことです。つまり、ページが最初に読み込まれたときにインターネット接続があった場合、「オンライン」と表示されますが、ネットワーク ケーブルを外すと「オフライン」とは表示されません。

基本的には、一度ダウンロードするreadyStateと常に ' complete' になりますが、何度でもテストを実行したいと思います。

<script type="text/javascript">
setInterval('checkimage()', 1000);

function checkimage() {
    var imgTmp = new Image();
    imgTmp.src = 'test.png';
    if (imgTmp.readyState == 'complete') {
        document.getElementById('div1').innerHTML = "<font size=15 face=ariel color=green>Online</font>";
    } else {
        document.getElementById('div1').innerHTML = "<font size=15 face=ariel color=red>Offline</font>";
    }
}
</script>

どんな助けでも大歓迎です!

4

2 に答える 2

2

ソリューション全体については疑問ですが、ダウンロードを強制したい場合、つまりキャッシュを回避したい場合は、置き換えることができます

imgTmp.src = 'test.png';

imgTmp.src = 'test.png?t='+(new Date().getTime());
于 2013-02-07T11:56:26.730 に答える
1

あなたのソリューションの問題は、ソースを設定した直後に readyState をチェックしていることです。代わりにloadandイベントを使用してください。error

function checkimage() {
    var imgTmp = new Image();
    imgTmp.onload = function() {
        printState("Online");
    };
    imgTmp.onerror = function() {
        printState("Offline");
    };
    imgTmp.src = "test.png?_=" + (+new Date());
}

function printState(state) {
    document.getElementById("div1").innerHTML = "<span style=\"font-size:15;font-face:'Arial'; color:green\">" + state + "</span>";
    setTimeout(checkimage, 5000);
}

setTimeoutandの最初のパラメータとして文字列を使用しないでくださいsetInterval

于 2013-02-07T12:12:31.620 に答える