我試圖訪問一個iFrame的內容,我無處可去。爲什麼我可以訪問iFrame而不是其內容?
我有這樣的:
that.findGadget = $.fn.findGadget = function (root) {
var root = root || this;
if (root[0].tagName === "IFRAME") {
root = root[0].contentDocument || root[0].contentWindow.document;
}
console.log(root);
};
我呼籲的iFrame本身的功能,像這樣:
// options is my configuration object with id/src/...
var newHTML = document.createElement("iframe");
newHTML.setAttribute("src", options.src);
newHTML.setAttribute("frameborder", 0);
newHTML.setAttribute("data-id", options.id);
// add iFrame to page
// options.parent is a $(element)
newParentElement = options.parent.parent()[0];
options.parent.replaceWith(newHTML);
// select
var newRootElement = newParentElement.querySelectorAll(
'[data-id="'+options.id+'"]'
);
// calling on $('iframe')
$(newRootElement[0]).findGadget();
...
我好像裏面findGadget
作品聲明還好吧,所以root
設置爲iframe的document
。然而,我從那裏卡住,因爲我想嘗試的一切:
root.body
root.body.innerHTML
$(root).find('div');
$('iframe').contents();
是未定義的或一個空的選擇器。
問題:
如何正確訪問iFrame的元素?問題可能是內容尚未加載?我正在研究localstorage,所以所有文件都來自同一個「域」。
感謝您的幫助!
iframe是否完全加載?它在同一個域中嗎? – epascarello
相同的域名:是的。我如何檢查它是否被加載? – frequent
什麼是'options.src'?你提到的本地存儲意味着它可能是一個'data:'URI。 – Quentin