递归遍历嵌套的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')

上一篇下一篇

猜你喜欢

热点阅读