私は、CGI システムを介して動的に生成されるページに取り組んでいます。このサイトの実際の開発者には、Python コードを変更する時間がありません。とは言っても、ページをフレーム化し (同じドメイン)、JavaScript を使用してコンテンツを変更する必要があります。現在、URL を含むアンカー タグを見つけて、ターゲット属性を「_top」に設定しようとしています。 . このようにして、メニューなどを開くページ上のアンカーはフレーム内にロードされ、オフサイトを指すものはすべてウィンドウ全体にロードされます。これが私が試したことです:
function pointOutside(){
var anchorS = window.frames[0].document.getElementsByTagName("a");
for(i=0;i<anchorS.length;i++){
var foo = anchorS[i].getAttribute('href');
foo = foo.toString();
if(foo.search(/http/i) != -1){
anchorS[i].setAttribute('target','_top');
};
};
};
setTimeout("pointOutside()",2000);
タイムアウトにより、フレームのコンテンツが呼び出される前にロードするのに十分な時間が与えられますが、問題が発生しているのは、「http」で始まるかどうかについて href プロパティをチェックすることです。私は最初、「foo = foo.toString();」なしでこれを試しました。行、しかし、「Uncaught TypeError: Cannot call method 'search' on null.」の行に沿ってエラーが発生していました。「ああ、紐にしよう!」と思いました。しかし運がない。toString() を呼び出すと、同様のエラーが発生します...「Uncaught TypeError: Cannot call methor 'toString' of null.」
奇妙なことに、セレクターが機能していることを確認するために「alert(foo)」を使用し、href プロパティの値を示す各アンカー タグのポップアップを取得できました。
ここでどこが間違っているのかわかりません。どんな助けでも大歓迎です。