编辑:我已经解决了这个问题。您可以在下面查看我的评论。
我想获取所有 iframe 的 html 元素。 这些 iframe 可以位于我的主页中,也可以是嵌套的 iframe。 我想获取所有 iframe 元素。 互联网上有很多例子可以通过id获取特定iframe的元素。 例如; 获取 iframe 中的元素值,该元素值嵌套在 javascript 中的 Frame 中?
但我不想指定主 iframe id 或类似的东西。我想覆盖所有内嵌框架。(嵌套或不嵌套( 如果你能帮助我,我很高兴。 谢谢。
我也有一个例子,但它只能到达具有特定 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);
}
我已经用递归方法解决了这个问题。 这是我的方法:
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;
}