質問: 知っている方がいたら教えてください。 ローカルホスト(127.0.0.1)で動くWebがあります。 このWebの中で、あるボタンを押したとき、 外部(インターネット環境)のWebページにアクセスする際に、 ネットワークに接続しているかどうかを判別したいです。 正確には、インターネットに接続されている場合は、 外部Webページからjsonpを返して処理したい 〇接続済み →そのままjsonpのダウンロード 〇未接続 →「インターネットに接続してください」のアラート 困っているのが、このPC環境がProxyサーバを経由しているために、 外部のURLにアクセスしようとすると、ProxyのID、PWを求められ、 入力しないと外部にアクセスできない点です。 なので、非同期通信が使えません。 (使えるかもしれませんが、やり方がわからず。。。) (同期通信しないと、ID,PW入力中に処理が先に進んで、 常に「インターネットに接続してください」になってしまう) 通常は外部アクセスはオフラインですが、 ProxyのID,PWを入力することによってオンラインに切り替わります。 このような環境で、インターネット接続済みかどうかを 判別する方法はありますでしょうか。 よろしくお願いいたします。 追伸です。 同期通信で処理をした場合、インターネットに接続していない場合は、 timeoutが使えません。 $.ajax({ timeout: 3000, async: false }); の場合は、3秒でタイムアウトしないです。 追記です。 ちなみに、書きそびれて申し訳ないです。 利用ブラウザは、Firefox ver.38 になります。 追記です。 利用しているjQueryのバージョンは jquery-1.11.1.min.js になります。
回答: 非同期通信だと、どうしてもProxyのID,PWがクリアできませんでしたので、 同期通信で確認することにしました。 以下、私の取った方法です。 ``` function isConnectNetwork(){ return $.ajax({ type : "get", url : "https://hogehoge.com/ping.php", timeout : 2000, async : false }).responseJSON; } function onCheckNewVersion(){ var json = isConnectNetwork(); if( json == undefined || !json.result ){ alert("インターネットに接続してください"); return false; } (何か処理) } ``` また、jsonpを使うと、なぜかうまくタイムアウトできなかったので、 jsonpはあきらめました。 ひとまず、上記だとうまく動きました。 皆様ありがとうございました。