我正在尝试使用iframe元素从学校的peoplesoft门户页面中提取数据。 在主页上,页面源具有iframe元素。当我单击按钮离开该页面(即搜索类)时,页面源保持不变,但页面上的元素不同(使用inspect元素观察)。 我可以访问主页上的元素,但不能访问任何其他元素,因为我不认为我会考虑在iframe中重新加载数据/注入其他元素。如何在重新加载后访问元素? 这是我用来访问元素的代码段:
$(function() {
$('button').click(function() {
var btn = $(this);
var counter = ((btn.data('click-counter') || 0) + 1) % 5;
btn.text('Click me (' + counter + ')');
btn.data('click-counter', counter);
btn.toggleClass('remove', !counter);
});
});
答案 0 :(得分:0)
这是因为在导航时,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");