刷新后访问iframe元素

时间:2015-08-13 21:22:02

标签: javascript dom iframe peoplesoft

我正在尝试使用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);
  });

});

1 个答案:

答案 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");