このことは私を怒らせています...ページ内のすべてのリンクタグ()をチェックし、それらのリンクのうちの2つが特定のhref属性に少なくとも対応しているかどうかをチェックする単純なjsスクリプトがあります。スクリプトをインラインスクリプトとしてメインページに配置すると、うまく機能します。同じページの外部 .js スクリプト内に配置すると、要素が見つかりません。内部ドキュメントのみをスキャンし、親ドキュメントはスキャンしない場合と同様です。スクリプトはこれです
var as,i,islink,l1,l2;
l1 = false
l2 = false
as=document.getElementsByTagName('a');
for(i=0;i<as.length;i++)
{
islink=as[i].href;
alert(islink);
if(islink == 'http://www.linktocheck.com/')
{
if(!as[i].getAttribute('rel')) {l1 = true;}
}
if(islink == 'http://www.linktocheck.com/somedir/somepage.asp')
{
if(!as[i].getAttribute('rel')) {l2 = true;}
}
}
if(!l1 || !l2) {alert('links not found in the page');}
alert(islink); を入れました。デバッグ目的で、リンク要素がページで見つかったかどうかを確認します。呼び出しページの HTML は次のとおりです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1"><title>page a</title>
<meta name="robots" content="noarchive" />
<meta content="text/html; charset=iso-8859-1" http-equiv="content-type" /></head>
<body>
<script src="externaljstochecklinks.js?PARAMETER=somevalue" id="uniqueid" type="text/javascript"></script><div style="margin-top: 6px;margin-bottom: 4px;text-align: center;"><a href="http://www.linktocheck.com/somedir/somepage.asp" title="" target="_blank">[...]</a> <a href="http://www.linktocheck.com/" title="" target="_blank"><img src="http://www.linktocheck.com/skins/some/images/some.gif" alt="" style="border: none;vertical-align: middle;" /></a></div>
リンク チェック スクリプトをインラインで配置すると要素が検出されるのに、外部として配置すると検出されないのはなぜですか?