マルシェル新規登録で5000円分当たる

JavaScriptで指定サイトへの接続可否を判断する方法を探しています

指定のサイト(たとえばヤフーwww.yahoo.co.jp)に接続出来るかどうかをチェックし、OKの場合は処理A、NGの場合(サーバーエラーなど)は処理Bとさせたいのです

みなさんの場合どのようにされていらっしゃいますか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

 サーバーダウンなどによって、『必ずあるはずの画像ファイルが見つからない』といった状態の場合であれば、JavaScript は『その画像ファイルが読み込めたかどうか』という情報を持っていますので、それによってサーバーダウンを検知することができます。



 その場合、

<A HREF="xxxxx" onClick="if(document.images["IMG1"].complete==true){return true;}else{return false;}"><IMG SRC="xxxxx" NAME="IMG1"></A>

 というタグによって、リンク先へのジャンプを制限したりできます。
 return false; の部分に alert('ジャンプできません') といったコマンドを付け加えたりすることもできます。

 ただしこの方法だと、回線速度の低下によって読み込みが遅れていてもジャンプできないので、厳密にはサーバーダウンが検知できているわけではありません。
    • good
    • 0
この回答へのお礼

ありがとうございます

画像ファイルで制御する方法はありますよね


整理させて下さい^

指定のURL(ファイル)がロード出来た・出来ないを判断出来るのは、やはり画像だけなのでしょうか?

JavaScriptでの判断です

あ、環境記述遅くなりました Win IE6.0

お礼日時:2004/06/05 21:39

 相手が物理的に存在するかどうか(引越しなどをなされていないか)のチェックは、JavaScript だけではできません。


 物理的なコネクションを必要とするため、セキュリティの関係でそういう機能は載ってないんです。
 Perl を使えばできますが……。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます!
なるほど、サイトの存在可否はムリなのですね。。

ちなみにサーバーダウン(もしくは回線が重い等で一定時間遅延でもダウンと見なす)などを検知させることは可能ですか?

<IMG>で使われる onerror = "処理B"のようなカタチをイメージしてみました

たとえば、<IFRAME>でヤフーURLをロードするとき、接続失敗の時は違うサイトをロードさせるというようなことは出来ができそうな気がしました。

でも、<IFRAME>だと onerror = "処理B"がうまく使えなかったです。

お礼日時:2004/06/05 02:00

ブラウザのアドレス欄に直接URLを入力されたらそれを制限することはできないですし、


リンク先毎にボタンを作って、ボタンの表示・非表示を制御するような構想でしょうか?
それとも、「接続できるかどうかのチェック」というのは、ポリシーではなくて、実際にページが存在するかどうかをチェックしたい、という意味でしょうか?
その動作をするときのトリガーは何になりますか?
例えば、テキストボックスにURLを入力して、「確認」ボタンをクリックしたら、チェック処理が動いて
「接続できます」という表示がされるとかでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます!

提示頂いた中では、以下が近いかもしれません。

>例えば、テキストボックスにURLを入力して、「確認」ボタンをクリックしたら、チェック処理が動いて「接続できます」という表示がされる

<IFRAME>でヤフーURLをロードさせ、接続失敗(サイトがない、回線ダウン、あるいは、サイトが重くてレスポンス遅いのも含める)の時は違うサイト(例えばグーグル)をロードさせるというようなことができないかと思いました。


<IMG>で使われる onerror = "処理B"のようなイメージです

<IFRAME>だと onerror = "処理B"がうまく使えなかったです。

お礼日時:2004/06/05 02:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJavaScriptで文字列の特定文字以降を取得する方法

変数 url に以下のような文字列が代入されています。
var url='http://www.example.com?id=2&page=3';

ここから?以降の文字列だけを取得したいのですが、どのようにすれば良いのでしょうか?
「id=2&page=3」←このような結果が欲しいです。

ブラウザのurlから直接?以降を取得するには location.search を使えば良いというのは調べてわかりましたが、変数に文字列としてurlが代入された場合の方法がわかりません。

ご回答よろしくお願いいたします。

Aベストアンサー

文字列から抽出するのであれば、indexOfを使うか正規表現かでしょうね
深く考えなければ前者、複雑なデータを取りたいなら後者でしょうか

<script>
var url='http://www.example.com?id=2&page=3';
if(url.indexOf("?")>=0){
var str1=url.substring(url.indexOf("?")+1,url.length);
}
document.write(str1+"<br>");

var reg=new RegExp("\\?(.+?)$");
if(url.match(reg)){
var str2=url.match(reg)[1];
}
document.write(str2);
</script>

Qあるurlが存在する(?)かどうかを返す関数が知りたいです。

例えば、
http://www.abc/def.htm
のページが存在するかどうかを調べる関数あったら教えて下さい。
また、javascriptでは不可能であるなら教えて下さい。

Aベストアンサー

JAVAスクリプトではできなさそうなので、
VBSで。。。
たとえば、GET.vbsというファイル名で記述します。
Dim objRequest
set objRequest= WScript.CreateObject("Microsoft.XMLHTTP")
objRequest.open "GET", "http://www.abc/def.htm", False
objRequest.send
msgbox "Status: " & objRequest.Status & " " & objRequest.StatusText & vbCRLF
msgbox objRequest.getAllResponseHeaders
msgbox objRequest.responseText

Statusの値が、"404"なら存在しないということかな。
ちょっと、確認してないですが悪しからず。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QAjaxが動きません~『status=0』?

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/004/index.html
その上で、
  if ((httpObj.readyState == 4) && (httpObj.status == 200))
  {
    displayData();
  } else {
    document.ajaxForm.result.value = httpObj.status;
  }
としました。


これで2日悩んでいるので、解決したいのです。
よろしくお願いいたします。

Ajaxを使うため、
web上のサンプルをとってきて実行してみたところ、動きません。

いろいろ調べてみたところ、
通常
 if(httpObj.status == 200)
などで使われるstatusが0になっていることが分かりました。

どこかで
 『ローカル上ではstatusは0になる』
という記述を見たのですが、Apache2.0.59が入っています。

Apacheが入っていてもstatusは0になるのでしょうか?

今回使用したサンプルは以下のサイトをのモノを貼り付けました。
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/c...続きを読む

Aベストアンサー

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のようなアドレスになる場合にstatusを受け取れません。
ローカルでもウェブサーバーを使っていればstatusコードを受け取れます。

蛇足になりますが
statusを見るだけだったらContent-typeは関係ないですよ。
ファイルが有れば200、エラーならそのエラーコードが入ります。
404 FileNotFoundとかのHTTP Status codeと同じですので。

>   if ((httpObj.readyState == 4) && (httpObj.status == 200))
>   {
>     displayData();
>   } else {
>     document.ajaxForm.result.value = httpObj.status;
>   }
この書き方では、else文はたぶん意味はないと思います。

readyStateの変遷を見るためなら

document.ajaxForm.result.value += httpObj.readyState + ', '+ httpObj.status + '\n';

、、、を、if文の前に書いた方がいいと思います。(たぶん動くと思うので)

> error.logにしか書き込みがないという時点で失敗なのがよく分かりました。
Apacheの起動に失敗してるのでは?

まさかとは思いますが、Apacheをインストールしただけで動いてないとか、使ってないとか、
そういうことはないですよね?
アクセスするアドレスってどうなってます?
ちゃんとhttp://localhost/~ または http://127.0.0.1/~としてますか?

> 『ローカル上ではstatusは0になる』
語弊のある書き方ですが、ウェブサーバーを使わずにファイルを読み込んだ場合、
つまり、file:///~のよ...続きを読む

Q別ファイルのfunctionの読み込み方

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために私が最初に書いたhtmlの文です(もちろん実行できませんでした)
------------------------------------
<html>
<script language="javascript" src="hello.js">
aisatsu(){
document.write(aa);
}
</script></html>
------------------------------------

こんにちは
外部ファイル hello.js
-----------------------------
function aisatsu(){
var aa="hello"
}
-----------------------------
というファイルが存在した時にjikkou.htmlでaaの値、”hello”を呼び込みたい場合はどう記述すればよいのでしょうか?htmlのなかでaisatsu()をどこに記述していいのか分かりません。どうか教えてください。ただ、hello.jsのほうは実際の記述を簡略化したものであるのでそちらのほうはいじれません。

宜しくお願いします。

必要ないかもしれませんが、念のために...続きを読む

Aベストアンサー

function内で「var」をつけて変数を宣言するとfunction外からその変数の内容を取得することができなくなります。(returnで参照することはできます。)
なので変数の内容を取得する場合は「hello.js」の内容を

function aisatsu(){
var aa="hello";
return aa;
}

このように修正し、

<script language="javascript" src="hello.js"></script>
<script language="javascript">
var data=aisatsu();//「aisatsu()」関数の「aa」変数内のデータを引っ張り出す(return aa;)
document.write(data);//書いたり
alert(data);//アラートしたり
window.status=data;//ステータスバーに表示したり・・
</script>

QSYSユーザーでログインしたい

SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
お願いします。

Aベストアンサー

>SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
特別なことする必要がないと思います。
ログインできない場合いろいろな原因が考えられます。
一番可能な原因は設定によってSYSユーザーNOMAL権限でログインできない場合あります。
この場合
sqlplus sys/パスワード@接続文字列 as sysdba
で試してください。


>SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
conn sys/パスワード@接続文字列 as sysdba

Q無線LANと有線LANの自動切換え

Windows7のノートパソコンを使用しています。
通信の設定としては、日頃から
ローカルエリア接続もワイヤレスネットワーク接続も両方とも有効にしておき、
ローカルエリア接続の方を優先的に接続するようにしています。

その状態で、例えばノートパソコンを持って席を立つ時、LANケーブルを引き抜くと、
自動的にワイヤレスネットワーク接続に切り替わります。
しかし、その後席に戻ってきて、LANケーブルを挿しても、ローカルエリア接続に
自動で切り替わりません。(ずっとワイヤレスネットワーク接続のままです。)

「ワイヤレスネットワーク接続」→「ローカルエリア接続」が自動的に切り替わるような
方法をご存知の方がいらっしゃいましたら、教えて頂けませんでしょうか。

Aベストアンサー

No1です。
状況が違うのですかね。正確に書くと、LANケーブルをつないだ状態では、有線と無線と両方の接続が有効で、通常の通信は有線経由で行われています。LANケーブルを抜くと無線のみが接続されているので、無線経由の通信。LANケーブルを戻すと、また両方の接続が有効になって、有線経由で通信が行われます。

フルマップを表示させると、同じPCが有線でも無線でもつながっている状況が表示されます。画像の上ではPCのアイコンは2つですが、実物は1台です。

>ローカルエリア接続の方を優先的に接続するようにしています。

これは具体的にはどういう操作ですか?

QデータベースのINT型項目にNULLはNG?

以前、知り合いからデータベースのINT型の項目には出来ればNULLを許可しない(NOT NULL)方がいいと聞いたことがあるのですが、本当でしょうか?

現在不動産の物件データを登録するためのシステムを作成しており、
データベースの設計を行なっている最中なのですが、
例えば金額や面積など数字しか入力されない項目はINT型にしたいと考えています。
※データベースはMySQLになります。

ただし、
物件データ登録時に数字項目に何も入力されなければ「NULL」、
0以上の数値を入力されている場合にはそのままその数値をデータベースに登録したいと考えています。
※0を入力されている場合には「0」をそのまま入れたいです。

INT型の項目にはNULLを入れるのを避けた方がいい場合には、0を入れるような仕様に変更しようと考えているのですが、その辺のことについて教えて頂けると助かります。

ざっくりとした質問で申し訳ございませんが、宜しくお願い致します。

Aベストアンサー

物件データ登録時に数字項目に何も入力されなければ「NULL」、0を入力されている場合には「0」
本来の意図としては正しいはずです。
Nullは本来、どの値を入れればいいのかわからない値ということなので、
数字がわからない=何も入力していない ということで、Nullを指定するのは正しいはずです。
しかし、
実際に使うときには、Nullは実に不自由なので、
Nullは使うなという話がでてきます。
## 私なら、入力区分 0=未入力、1=入力 と 数値(未入力は0)と別々に持つかもしれません。

というのは例えば、
金額 100万以上の物件は何件?
というSQLに対して、100件と答えがでて、
金額 100万未満の物件は何件?
というSQLに対して、50件と答えがでたとします。
じゃあ、全物件は?・・・172件だったりします。
何故?⇒Nullが22件だったためです。
(Nullは0とは違い、どちらの検索条件にも含まれません。)
・・・この不自由さを回避するために数値項目に、Not Null制約をつけることが多いです。


人気Q&Aランキング