获取嵌套在javascript中Frame内的iframe中的Elements?

时间:2018-08-12 15:37:32

标签: javascript jquery iframe

编辑:我已经解决了问题。您可以在下面查看我的评论。

我想获取所有iframe的html元素。 这些iframe可以位于我的主页上,也可以是嵌套的iframe。 我想获取所有iframe元素。 互联网上有很多示例可以通过ID获取特定iframe的元素。 例如; Get element value inside iframe which is nested inside Frame in javascript?

但是我不想指定主要的iframe ID或类似的名称。我想到达所有iframe。(嵌套或不嵌套) 如果您能帮助我,我感到非常高兴。 谢谢。

我也有一个示例,但它只能到达具有特定ID的页面上的顶部iframe。 这是我的例子;

var htmlDocument = document_root;
var numberOfFrame = $("iframe[id^='" + rules.frameId + "']").length;
if (numberOfFrame > 0) {
    htmlDocument = $("iframe[id^='" + rules.frameId + "']")[numberOfFrame - 1].contentDocument;
    formName = $("iframe[id^='" + rules.frameId + "']")[numberOfFrame - 1].id;
    var iframeList = [];
    iframeHTMLObjectList.push(htmlDocument);
    for (i = 0; i < htmlDocument.getElementsByTagName("iframe").length; i++) {
        iframeList.push(htmlDocument.getElementsByTagName("iframe")[i]);
    }
    for (i = 0; i < iframeList.length; i++) {
        iframeHTMLObjectList.push(iframeList[i].contentWindow.document);
    }
    console.log(formName);
}

1 个答案:

答案 0 :(得分:0)

我已经用递归方法解决了这个问题。 这是我的方法:

function getIframeElements(htmlDocument) {
var frames = htmlDocument.getElementsByTagName("iframe");
if (frames.length > 0) {
    for (var i = 0; i < frames.length; i++) {
        try {
            formName = frames[i].id;
            getIframeElements(frames[i].contentWindow.document);
        } catch (err) {
            console.log(err);
        }

    }
}

if (!iFrameArr.includes(htmlDocument)) {
    iFrameArr.push(htmlDocument);
}

return iFrameArr;

}