contentDocument for an iframe

contentDocument for an iframe

本文关键字:iframe an for contentDocument      更新时间:2023-09-26

对于iframe(甚至是旧的"frame"元素),"contentDocument"究竟代表什么?它是否等同于"html"元素或"body"元素?它有什么用?所有浏览器都支持这个属性吗?

w3.org

类型为Document的contentDocument,只读,在DOM Level 2中引入此框架包含的文档(如果有并且可用),否则为空。

MDN

从DOM iframe元素中,脚本可以通过contentWindow属性访问包含的HTML页面的窗口对象。contentDocument属性指向iframe中的document元素(相当于contentWindow.document),但IE8之前的ie版本不支持。

msdn

此页面或框架包含的文档
此属性在Windows Internet Explorer 8

中新增。

要获取body元素的innerHTML可以使用

iframe.contentDocument.getElementsByTagName("body")[0]

iframe.contentDocument.body

contentDocument是获取iframe或frame的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

享受,Nili