DHTML Diver Help

Information

リンクチェック(同期版)

ブラウズ中の画面上の、リンク一覧を作成し別ウィンドウに表示します。

さらに、作成された各リンクへXMLHTTPリクエストを行い結果を表示します。

//links check [sync]
var objTgt=document.links;
var html="";
html+="<TABLE border='1'>";
for (var numIx=0;objTgt.length>numIx;numIx++){
    html+="<TR>";
    html+="<TD>"+numIx+"</TD>";
    html+="<TD>"+objTgt[numIx].innerHTML+"</TD>";
    html+="<TD></TD>";
    html+="<TD><a href='"+objTgt[numIx]+"'target='_blank'>"+objTgt[numIx]+"</a></TD>";
    html+="</TR>";
}
html+="</TABLE>";
var win = window.open();
win.document.open();
win.document.write(html);
win.document.close();

var objTgt = win.document.body.getElementsByTagName("TABLE")[0].rows;
for (var numIx=0;objTgt.length>numIx;numIx++){
    try{
        var strHref = objTgt[numIx].getElementsByTagName("A")[0].href;
        var numPnt  = strHref.lastIndexOf("#");
        if (numPnt >= 0)strHref = strHref.substring(0,numPnt);
        var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
        xmlHttp.open("GET",strHref,false);
        xmlHttp.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
        xmlHttp.send();
        objTgt[numIx].cells[2].innerText=xmlHttp.status+" "+xmlHttp.statustext;
    }catch(e){
        objTgt[numIx].cells[2].innerText=e.message;
    };
};

リクエスト結果の意味

よく見かけるHTTPステータスは、以下の2種類だと思います。

HTTP Status
ステータス 説明
200 OK リクエスト成功
404 Not Found リクエスト失敗
(サーバー側に指定されたファイルが見つからなかった等)

※詳細は、MSDN status Property (IXMLHTTPRequest)や、Webサーバー側の設定を調べて見てください。

セキュリティの設定

IEのセキュリティ設定により、他ドメインへのアクセスに失敗する事があります。

一概に何が原因とは、言えないのですが、「書き込みできません。」と表示される場合は、以下の設定を行うとアクセスできるようになる事を確認しています。(IE5.5,IE6)

IEメニューバーの[ツール]-[インターネットオプション]-[セキュリティ]の、該当ゾーンの[レベルのカスタマイズ]により、[ドメイン間でのデータソースのアクセス]を有効にする

Sponsor