私のjavascript内のすべてのiframeを比較して、そのうちの1つが要素の(aタグ)本体要素と一致するかどうかを確認します。私が持っている問題は、フレームワークによってすべて生成されるため、iframeのコレクションが時々変更されることがあるということです。したがって、IE8で「アクセスが拒否されました」というエラーが表示されることがあります。すべての私のインラインフレームは、フレームワークの一部であり、したがって同じのprotocollを持っているので、私は、任意の外部Iフレームを参照していないよ、ポートなどこれは私がiframeのコレクションをループに使うコードです:私は一時的に固定IframeコレクションをループするときのJavascriptエラー - >間違ったインデックスの問題を防ぐ
var calculatedwidth = 0;
var calculatedheight = 0;
var searchbody = $(srcElement).closest('body');
//I store the Iframe-nodelist in var arrFrames
var arrFrames = document.getElementsByTagName("iframe");
LabelA1:
for(i = 0; i<arrFrames.length; i++){
//console.log(i);
//if(arrFrames[i].id != 'PeopleDetailsIframe'){
if($(arrFrames[i].contentWindow.document.body).is(searchbody)){
// This line is where the error occures normaly
calculatedwidth = $(arrFrames[i]).offset().left;
calculatedheight = $(arrFrames[i]).offset().top;
break LabelA1;
}
else{
//console.log("Forum Iframe not found");
}
}
}
私検索したiframeが見つかった場合、ループを中断するブレークを含むことで問題が発生します。これは私のコードが実行される時間の約80%で動作します。しかし、Webページはカスタマイズ可能なので、コードが実行されたときにJavaScriptエラーが発生すると回答したユーザーもいます。 Cross-Domain scripting、Scripting with Iframe Collectionという件に関するいくつかの調査に基づいて、Iframeコレクションがライブコレクションであることを知りましたか?これは、コレクションがループしているときにコレクションが(時には)変更されることを意味します。だから私は、これは2つのエラー、無限ループまたは間違ったインデックスエラーを引き起こす可能性があると仮定した。 varのiframeにrefrenceを格納すると、エラーを防ぐことができると思いました。しかし明らかに私は間違っていた:
var arrFrames = document.getElementsByTagName("iframe");
これは役に立たなかった。どのように私は間違ったインデックスの問題を防ぐことができる任意の提案?あるいは私の問題がどこにあるのかについて完全に間違っていますか? 多くのご協力をいただきました!
GODどのように盲目的なことができますか?仲間を賞賛してくれてありがとう。今働く:) – Abhischek