我比較了javascript中的所有iframe,以查看它們中的一個是否與我的元素(a -tag)正文元素匹配。我遇到的問題是,iframe的集合有時可能會改變,因爲它們都是由框架生成的。因此,有時我會在IE8中得到「訪問被拒絕」的錯誤,有時我不會。我沒有引用任何外部的I幀,因爲我所有的iFrame是框架的一部分,因此具有相同的protocoll,港口等,這是我通過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%的時間執行我的代碼。但由於網頁是可定製的,所以有些用戶迴應說,我的代碼運行時會出現javascript錯誤。根據我在Cross-Domain scripting,Scripting with Iframe Collection上所做的一些研究,我瞭解到Iframe系列是一個現場收藏?所以這意味着當我循環播放時,集合必然會改變(有時)。所以我認爲這會導致2個錯誤,無限循環或錯誤的索引錯誤。我認爲將參數存儲在var中可以防止錯誤發生。但顯然我錯了:
var arrFrames = document.getElementsByTagName("iframe");
這沒有幫助。任何建議如何防止錯誤的索引問題?或者我完全錯了我的問題在哪裏? 非常感謝幫助!
上帝啊,我怎麼會失明!感謝您的配偶。現在工作:) – Abhischek