我已经创建了一个包含空iframe的页面。然后,我可以选择iframe文档并导航到它的正文:
var iframe = document.getElementsByTagName('iframe')[0];
var doc = iframe.contentDocument || iframe.contentWindow.document;
var body = doc.body;
console.log("Body is", body);
在firefox和chrome中,这给了我身体对象。在IE10中它给我null。
Here is a Jsbin demonstrating the issue.打开JS,Console,Output面板,然后单击“Run With JS”。
两个问题:
答案 0 :(得分:6)
我今天早些时候遇到过类似的问题。似乎IE,至少9和10,没有正确创建iframe体(当我使用开发人员工具时,我能够在iframe中看到一个body标签,但就像你无法调用它一样),当没有指定的src。它给你null因为它不存在。
答案是,是否有跨浏览器方式来访问iframe的正文,是不是。但是,你可以使用一种解决方法。首先,检查iframe主体是否存在,如果不存在,则创建它。
您的代码如下所示:
var iframe = document.getElementsByTagName('iframe')[0];
var doc = iframe.contentDocument || iframe.contentWindow.document;
// The workaround
if (doc.body == null) { // null in IE
doc.write("<body></body>");
}
var body = doc.body;
console.log("Body is", body);
答案 1 :(得分:0)
此代码适用于跨浏览器:
var doc=ifr.contentWindow||ifr.contentDocument;
if (doc.document) doc=doc.document;
var body=doc.getElementByTagName("body")[0];
答案 2 :(得分:0)
一年后但我相信解决方案是打电话
doc.open()
//make any modifications
doc.close()
//at this point doc.body will not be null
这使得事物以相当一致的方式跨浏览器工作