多くのシナリオでは、Web アプリケーションはマシンがインターネットに接続された後にのみ起動できます。インターネット接続がない場合は、エラーが表示されます。 ,
ただし、マシンを再起動する必要がある場合があります。 マシンの再起動直後に Web アプリケーションが開始される場合は、マシン上のネットワーク サービスの準備がまだ整っていない可能性があります。
特に Windows 7 では、ネットワークサービスの起動に数秒かかります。この場合はどうすればよいですか?
私は以前にいくつかの方法を試しました:
たとえば、ping で判断しますが、ping には非ローカル IP アドレスが必要です。 これはあまり一般的ではありません
たとえば、特定のポートが占有されているかどうかを監視しますが、光ポートが占有されている場合、それはネットワークが開始されたことを意味しません。
一方、Web アプリケーションの場合は、JavaScript を使用するなど、フロントエンドで判断するのが最善です。
インターネット上には、ping の効果をシミュレートする JavaScript を作成する人もいます。しかし、それにはいくつかの問題があります。
どうすればよいでしょうか? 重大な状況になった場合、HTML5 が適切な解決策を提供します:
方法 1:
navigator.onLine
if (navigator.onLine)
{ //正常に動作します}
else { //オフライン状態でタスクを実行する}
HTML5 ナビゲーターのこの新機能は、それを簡単に実行するのに役立ちます。
HTML5 は、このための navigator.onLine 属性と、その値を定義します。この属性は true です。デバイスがインターネットにアクセスできることを示します。 false の値は、デバイスがオフラインであることを示します。
もちろん、ブラウザごとにこの機能のサポートは異なります。
IE6 と Safari 5 はより適切にサポートしています。
Firefox 3 は navigator.onLine 属性をサポートしていますが、メニュー項目「ファイル - Web 開発者 (設定)」を手動で選択する必要があります。 ) - オフラインで作業」を実行すると、ブラウザが適切に動作します。
Chrome には 12 以降が必要です。
方法 2: もちろん、より互換性をサポートしたい場合は、オンラインとオフラインの 2 つのイベントを使用できます。これら 2 つのイベントは、ネットワークがオフラインからオンラインに、またはオンラインからオフラインに変化したときにそれぞれトリガーされます。これら 2 つのイベントは、ウィンドウ オブジェクトでトリガーされます。
アプリケーションがオフラインかどうかを検出するには、ページがロードされた後、navigator.onLine を通じて初期ステータスを取得するのが最善です。次に、上記の 2 つのイベントを使用して、ネットワーク接続ステータスが変化したかどうかを判断します。上記のイベントがトリガーされると、navigator.onLine プロパティの値も変更されますが、ネットワーク ステータスの変化を検出するには、このプロパティを手動でポーリングする必要があります。
var EventUtil = {
addHandler: function (element , type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false)
} else if (element.attachEvent) {
要素。 attachEvent("on" タイプ, ハンドラー);
element["on" type] = ハンドラー;
}
}
}; , "オンライン ", function () {
alert("オンライン")
});
EventUtil.addHandler(window, "オフライン", function () {
alert("オフライン") );
});