2015-08-13 148 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