今天我遇到了一個問題,它稍微攪動了我。我正在爲特定的基於Web的應用程序編寫Chrome擴展。該網頁是一個(包裝)IFRAME,在真正的頁面內可以找到,但內部框架是更多的IFRAME。JQuery - 等待嵌套的iFrame完成加載
爲了確定我目前在應用程序中的位置,我需要讀取一些數據,這是深度兩個iframe。我已經找到一個辦法讓我尋找具有以下字符串:
document.getElementById("firstiframe").contentWindow.document.getElementById("secondiframe").contentWindow.document.getElementById("theelement").innerText;
這裏的問題是,因爲這得到執行所需的所有幀必須存在。由於secondiframe
在腳本執行後加載,因此它在getElementById("secondiframe")
上失敗,因爲它尚不存在。
在我看來,我需要耐心等待,直到第二個iframe被加載,直到我執行搜索。在這裏,我不能比第一個iframe更進一步。
$('#firstiframe').load(function() {
$('#secondiframe').load(function() {
console.log("We made it!");
});
});
這並不工作,有人建議我去尋找這樣的事情:
$('#firstiframe').load(function() {
$(this).contents().find('#secondiframe').load(function() {
console.log("We made it!");
});
});
然而,這既不是成功的,它永遠不會傳遞/匹配到secondiframe。
在此先感謝!
這一個仍然不工作,它根本不通過。我不能使它與這樣的事情? '$('#firstiframe')。contentWindow.document.GetElementById('secondiframe')。load' – user3249751
@ user3249751嗯,你究竟是什麼意思:「根本不通過」?檢查我編輯的答案,沒有一個jsFiddle或一些事情會很麻煩。你可以混合使用jQuery和vanilla Javascript,是的,但是這並不能滿足你的問題,你想傳遞一個處理程序的對象在傳遞那個處理程序時不存在,你明白嗎? – loveNoHate