[解決済み】jQueryでインターネット接続があるかどうか確認する?重複
質問
jQueryを使ってインターネットに接続されているかどうかを確認するにはどうすればよいのでしょうか? そうすれば、「本番ではGoogleキャッシュ版のJQueryを使用し、開発時にはインターネット接続状況に応じてそのバージョンまたはローカルバージョンのいずれかを使用する」という条件分岐を設定することができます。
解決方法は?
あなたのケースに最適なオプションは、次のとおりです。
クローズ直前
</body>
タグを使用します。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
これは、あなたの問題がjQueryに集中していることを考えると、おそらく最も簡単な方法でしょう。
より堅牢なソリューションが必要な場合は、以下を試してみてください。
var online = navigator.onLine;
の続きを読む オフラインのウェブアプリケーションに関するW3Cの仕様 しかし、これは最新のウェブブラウザで最もよく機能します。古いウェブブラウザでこれを行うと、期待通りに、またはまったく機能しない可能性があることに注意してください。
あるいは、自分のサーバーへのXHRリクエストは、接続性をテストする方法としてそれほど悪いものではありません。他の回答で、XHRには失敗するポイントが多すぎると書かれていることを考えると、もしXHRが接続を確立するときに欠陥があれば、日常的に使用するときにも欠陥があるはずです。もしあなたのサイトが何らかの理由でアクセス不能になった場合、同じサーバで動いている他のサービスもおそらくアクセス不能になるでしょう。その判断はあなた次第です。
他人のサービス、それもgoogle.comにXHRリクエストをするのはお勧めしません。自分のサーバーにリクエストするか、まったくリクエストしないかです。
オンラインとはどういう意味ですか?
オンラインであることの意味について、いくつかの混乱があるようです。インターネットはネットワークの集まりですが、時にはVPNを利用していて、インターネットやワールドワイドウェブにアクセスできないこともあります。多くの場合、企業は、他の外部ネットワークへの接続が制限されている独自のネットワークを持っているため、あなたは&quot;オンライン&quot;と見なされる可能性があります。オンラインであることは、以下のネットワークに接続されていることのみを意味します。 a ネットワークに接続できるかどうかではなく、接続しようとしているサービスが利用可能かどうか、またそのサービスに到達できるかどうかです。
あるホストがネットワークから到達可能かどうかを判断するには、次のようにすればよいでしょう。
function hostReachable() {
// Handle IE and more capable browsers
var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
// Open new request as a HEAD to the root hostname with a random param to bust the cache
xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false );
// Issue request and handle response
try {
xhr.send();
return ( xhr.status >= 200 && (xhr.status < 300 || xhr.status === 304) );
} catch (error) {
return false;
}
}
また、そのためのGistはこちらにあります。 https://gist.github.com/jpsilvashy/5725579
ローカル実装の詳細
いつもfalseを返される」というご意見があります。それは、おそらくあなたのローカル・サーバーでテストしているからでしょう。どのサーバにリクエストするにしても、HEAD リクエストに応答できる必要があります。
関連
-
[解決済み] jQueryのディファレンシャルとプロミス - .then() vs .done()
-
[解決済み] jQueryでdiv内のspanにテキストを追加する
-
[解決済み] どのようにjQueryでJSON配列をループするのですか?
-
[解決済み] jQueryでborder-bottomの色を変更する?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] javascript(またはjQuery)を使って::beforeや::afterなどのCSS疑似要素を選択し、操作する。
-
[解決済み] GoogleのホストされたjQueryを使用する最良の方法、しかしGoogleの私のホストされたライブラリにフォールバックすることは失敗します。
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Chrome Developer ToolsでリソースがDocumentと解釈され、MIMEタイプapplication/jsonの警告で転送される。
-
[解決済み] jquery fadeIn が動作しない。
-
[解決済み] jQuery - 不正な呼び出し
-
[解決済み] jQueryでリンクを無効化する
-
[解決済み] チェックボックスのオン/オフの切り替え
-
[解決済み] ネストした多次元のjsonオブジェクトの書き方
-
[解決済み] cssで自動的にシャインエフェクト
-
[解決済み] jcarouselliteでbtnNextがクリックされたときに変数をインクリメントするには?
-
[解決済み] フォーム送信のjQueryが動作しない
-
[解決済み】インターネット接続がオフラインになったことを検出しますか?