2015-08-13 104 views
0

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

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

回答

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"); 
+0

这适用于第二页(一个主画面),但不适用于以下该页面即 我试图做运行getElementsByClassName方法以及该对第二页和第三页同一类元素的人,并且这两种方法的结果是相同的(即使它们实际上不同) – scatta678

+0

对于getElementById,这同样适用 - 如果第2页和第3页都具有该ID,但在每个页面上具有不同的值,则运行第3页的函数将返回与第2页相同的值 – scatta678

+0

我在评论后编辑了答案。 – taxicala