iframe的contentDocument

时间:2011-07-05 11:19:25

标签: javascript html dom iframe frames

“contentDocument”究竟为iframe(甚至是旧的“frame”元素)代表什么?它等同于“html”元素还是“body”元素? 有什么用? 并且所有浏览器都支持此属性吗?

3 个答案:

答案 0 :(得分:19)

w3.org

  

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

MDN

  

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

msdn

  

此页面或框架包含的文件
  此属性是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