递归遍历嵌套的iframe中document
2021-08-16 本文已影响0人
二枚目
起因是在模态框showModalDialog获取父级document后再获取元素时发现拿到的是null,原因是该页面被作为iframe嵌套在另外的页面里了。此时在模态框下通过window.parent.document获取的是最外层页面的document,可以通过以下代码递归遍历所有嵌套的iframe来获取dom元素:
$(function() {
listIframe(window.parent.document);
});
function listIframe(doc) {
//需判断传入document是否为空
if(doc) {
//获取该document下的目标元素,存在的话再执行方法
var p2divs = doc.getElementsByName("P2");
if(p2divs && p2divs.length>0){
p2divs[0].click();
}
var iframeTemp = doc.getElementsByTagName("iframe");
if(iframeTemp && iframeTemp.length>0){
for(var k=0; k<iframeTemp.length; k++){
var iframeDoc = iframeTemp[k].contentDocument;
listIframe(iframeDoc);
}
}
}
}
如果不想粗暴的遍历所有iframe获取所有document来得到元素的话可以加条件判断是否自己目标iframe的id。
附:获取目标div下的所有input标签DOM,此时返回的是数组,需遍历或通过下标取值。document.getElementById("targetDiv").getElementsByTagName('INPUT')