【问题标题】:Get Elements inside iframe which is nested inside Frame in javascript?获取嵌套在javascript框架内的iframe内的元素?
【发布时间】:2018-08-12 15:37:31
【问题描述】:

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

我想获取所有 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);
}

【问题讨论】:

  • 除非所有这些 iframe 都来自与主页相同的来源,否则您无法访问它们
  • 例如;我的主页有 2 个 iframe。这 2 个 iframe 也有 3 个 iframe。所以我想获取这 8 个 iframe 的 html 元素。(2 个主要,6 个嵌套)。有什么方法可以访问它们吗?我想一定是的。
  • 如果他们在同一个域需要让每个框架页面加载然后访问内部框架。如果不是同一个域不能访问它们

标签: javascript jquery iframe


【解决方案1】:

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

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;

}

【讨论】:

    猜你喜欢
    • 2014-07-27
    • 2020-10-24
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2019-03-20
    相关资源
    最近更新 更多