ほとんどのブラウザーには、このためのネイティブ プロパティがあります: navigator.onLine
。ただし、現在、この実装はブラウザーによって大きく異なるため、実際の状況で使用することは非常に困難です。
これを念頭に置いて、次の JavaScript 関数を使用して、ページが Web に接続されているかどうかを確認します。非常にシンプルで、クロスブラウザーで動作するはずです。サーバーから画像をロードしようとし、発生したエラーをキャッチすることで機能します。
var isOnline = true;
function onlineCheck(){
var testImg = new Image();
testImg.onerror = function(){
isOnline = false
alert("Web access is unavailable. Please check that you are connected to the internet.")
}
testImg.onload = function(){ isOnline = true; }
testImg.src = "https://www.google.ie/images/srpr/logo4w.png"; //replace this with an image on your site
}
サイトの を 1x1 ピクセルの画像に変更するtestImg.src
ことをお勧めします。ドメインへの接続はすでに開いている可能性が高いため、これは読み込みが速くなります。実際の画像を作成してアップロードするよりも数行のコードを実装する方が簡単なため、私は通常、この目的のために動的に生成された画像を使用します。これを試してみたい場合に備えて、1x1 ピクセルの画像を作成するために使用する PHP コードを含めました。これを JSP に簡単に適応させることができます。
header( "Content-type: image/gif");
header("Cache-Control: no-cache");
header("Cache-Control: must-revalidate");
printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33,249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59);
exit();