首页 > 解决方案 > 与嵌套 iFrame 中的元素交互,页面上存在但返回 null

问题描述

我正在编写一个脚本,它将为我下载一份报告。我的步骤之一是检查表格以获取我想要提取的报告的正确日期。我正在处理的网站很旧,它们是使用多个 iFrame 设置的(它们属于同一个域)。

根据我的研究,我想出了这一行来返回表格中某一行的 innerText

document.getElementById('iframe1').contentWindow.document.getElementById('iframe2').contentWindow.document.getElementsByClassName('status_table')[5].innerText

iFrame2 包含包含我要访问的所有信息的表。这条线有效,但只是有时。当我刷新页面,等待 10 秒并运行命令时,它返回 null。似乎在我扩展了 google chrome 中的所有元素之后,或者稍微弄乱了页面之后,它开始工作并返回正确的信息。

我不确定这里发生了什么,我访问元素是否错误?为什么在我单击页面上的内容或在开发控制台中展开元素后它开始工作?任何帮助,将不胜感激!

标签: javascriptdomiframe

解决方案


出于某种原因,当我使用 getElementsByTagName 而不是 getElementByID 它一直有效!

document.getElementsByTagName('iframe')[2].contentWindow.document.getElementsByTagName('iframe')[0].contentWindow.document.getElementsByClassName('status_table')[5].innerText.toString();


推荐阅读