2016-08-04 8 views
2

IE 7のブラウザが組み込まれたアプリがあります。静的なHTMLページでテストする必要があります。ユーザーがインターネットに接続しているかどうかにかかわらず、JavaScriptは大丈夫です。IE7ベースのブラウザがオンラインであるかどうかをテストする方法

Offline.jsただし、JavaScriptはサポートされていないため、優れたライブラリはここでは機能しません。

window.navigator.onLine object.propertyは存在しません。

metaリダイレクトは、インターネットにアクセスできない場合は現在のページにユーザーを残すため、リダイレクトは使用できません。ロジックは次のようになります。

function UserIsOnlineTest(){ 
// needed code goes here 
// boolean return value 
} 

if (UserIsOnlineTest()) { 
    window.location.replace('http://theOnlineSite.com/'); 
} 

考えられますか? (@RobMに基づく。答える)


私は終わった完全なソリューション

(function(){ 

    var testImage= 'http://the.site.com/testimage.png'; 
    var image = new Image(); 
    var online = true; 
    image.src = testImage; 
    image.onerror = function() { 
     online = false; 
    } 

    setTimeout(function() { 
     if (online) { 
      window.location.replace('http://the.site.com/'); 
     },1000); 
    } 

}()); 

さらにファイナライズし、私はエラーのためのテストの遅れを追加する必要がありました。これは実際にファイル内の唯一のコードであったため、画像がダウンロードされる前に実際にオンライン変数をテストしていました。あなたはオンラインである必要があります知っているイメージを持っている場合は

+0

それは 'navigator.onLine'ありませんか? 。大文字に注意してくださいL –

+0

また重複が可能です:http://stackoverflow.com/questions/189430/detect-that-the-internet-connection-is-offline –

+0

'window.navigator.online'はまだ利用できず、これは重複、私は明らかにIE7の答えが必要です。 – THBBFT

答えて

1

は、あなたがイメージタグを作成することができますし、onerrorは、ユーザーがオフラインであることを示している:

var googleLogo = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png'; 
var image = new Image(); 
image.src = googleLogo; 
image.onerror = function() { 
    // user is offline 
} 
+0

*オンラインでなければならないものに対してXHR要求を行うだけでは効率的ではないでしょうか? –

+1

埋め込みIE7コントロールからxhrリクエストを作成できません。スクリプトにアクセスできないと私に告げるのは誤りです。 – THBBFT

+0

どのように「効率的」ですか?私は、XHR要求よりもイメージ要求のオーバヘッドが少ないことを想像しています(これをバックアップするものは何もありません)。もし何かあれば、それをトスする –

関連する問題