刷新后访问 iframe 元素

Access iframe elements after refresh

我正在尝试使用 iframe 元素从学校 peoplesoft 门户页面中提取数据。 在主页上,页面源具有 iframe 元素。当我单击一个按钮离开该页面时(即搜索 类),页面源保持不变但页面上的元素不同(使用检查元素观察)。 我可以访问主页上的元素,但不能访问任何其他元素,因为我认为我没有考虑到 iframe 中其他元素的 data/injection 的重新加载。如何访问元素 post 重新加载? 这是我用来访问元素的片段:

var iframe = document.getElementById("id of iframe");
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var element = innerDoc.getElementById("name of id desired in iframe");

那是因为在导航时,iframe 的 document 发生了变化,您的 innerDoc 变量存储了旧文档的值,您可以创建一个函数来检索文档而不是将其存储在静态变量中:

var iframe = document.getElementById("id of iframe");
function getInnerDoc() {
    return iframe.contentDocument || iframe.contentWindow.document;
};
var element = getInnerDoc().getElementById("name of id desired in iframe");

根据您的评论,似乎整个 iframe 都存储在变量中并且从不刷新,您应该创建一个函数以便在每次需要检索元素时获取 iframe 文档:

function getIframeDocument(iframeId) {
    var iframe = document.getElementById(iframeId);
    return iframe.contentDocument || iframe.contentWindow.document;
};
var element = getIframeDocument().getElementById("name of id desired in iframe");