【发布时间】:2011-09-28 17:40:03
【问题描述】:
对于 iframe(甚至是旧的“frame”元素),“contentDocument”究竟代表什么?它等同于“html”元素还是“body”元素? 它有什么用? 所有浏览器都支持此属性吗?
【问题讨论】:
标签: javascript html dom iframe frames
对于 iframe(甚至是旧的“frame”元素),“contentDocument”究竟代表什么?它等同于“html”元素还是“body”元素? 它有什么用? 所有浏览器都支持此属性吗?
【问题讨论】:
标签: javascript html dom iframe frames
Document 类型的 contentDocument,只读,在 DOM Level 2 中引入 此框架包含的文档,如果有并且可用,否则为 null。
从 DOM iframe 元素,脚本可以通过 contentWindow 属性访问包含的 HTML 页面的窗口对象。 contentDocument 属性引用 iframe 内的文档元素(相当于 contentWindow.document),但 IE8 之前的 Internet Explorer 版本不支持。
此页面或框架包含的文档
此属性是 Windows Internet Explorer 8 中的新属性
所以要获取 body 元素的 innerHTML,您可以使用
iframe.contentDocument.getElementsByTagName("body")[0]
或
iframe.contentDocument.body
在当今的浏览器中。
【讨论】:
contentDocument 是获取 iframe 或框架的 Document 对象的标准化方法。它与在 iframe 中运行的 JavaScript 将通过 document 访问的对象相同。
正如其他答案中所述,IE 直到版本 8 才支持它,但确实支持通过 contentWindow 访问 iframe 的 Window 对象。因此,获取 iframe 的 <body> 元素的跨浏览器方法是:
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
var iframeBody = iframeDoc.body;
请注意,如果 iframe 不是来自与主文档相同的域,浏览器安全限制将阻止以这种或任何其他方式访问其文档对象。
【讨论】:
contentDocument 表示 iframe(DOM 对象)的文档。它不等同于html,因为文档有自己的属性,但是如果您键入:
myFrame.contentDocument.body
你会得到身体本身。
所有浏览器都支持,稍作修改:用于 Internet Explorer
myFrame.contentWindow.document
享受吧,妮莉
【讨论】: