“contentDocument”究竟为iframe(甚至是旧的“frame”元素)代表什么?它等同于“html”元素还是“body”元素? 有什么用? 并且所有浏览器都支持此属性吗?
答案 0 :(得分:19)
类型Document的contentDocument,readonly,在DOM Level 2中引入 此框架包含的文档(如果有)且可用,否则为null。
从DOM iframe元素,脚本可以通过contentWindow属性访问包含的HTML页面的窗口对象。 contentDocument属性引用iframe中的document元素(这相当于contentWindow.document),但在IE8之前的Internet Explorer版本不支持。
此页面或框架包含的文件
此属性是Windows Internet Explorer 8中的新属性
所以要获取body元素的innerHTML,你可以使用
iframe.contentDocument.getElementsByTagName("body")[0]
或
iframe.contentDocument.body
在今天的浏览器中。
答案 1 :(得分:12)
contentDocument
是获取iframe或框架Document
对象的标准化方法。它与在iframe中运行的JavaScript通过document
访问的对象相同。
正如其他答案中所述,IE在版本8之前不支持它,但支持通过Window
访问iframe的contentWindow
对象。因此,跨浏览器获取iframe的<body>
元素的方式是:
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
var iframeBody = iframeDoc.body;
请注意,如果iframe不是从与主文档相同的域提供的,则浏览器安全限制将阻止以此方式或任何其他方式访问其文档对象。
答案 2 :(得分:2)
contentDocument
表示iframe(DOM对象)的文档。它不等同于html
,因为文档具有自己的属性,但是如果键入:
myFrame.contentDocument.body
你将获得身体本身。
所有浏览器都支持它,只需稍加修改:使用Internet Explorer
myFrame.contentWindow.document
享受,Nili