编辑:我已经解决了问题。您可以在下面查看我的评论。
我想获取所有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);
}
答案 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;
}