BT9034: 仅 IE 和 Opera 支持 HTMLFrameElement 和 HTMLIFrameElement 的 document 属性
2016-01-06 16:23
627 查看
标准参考
根据 DOM-2 中的描述,HTMLFrameElement 和 HTMLIFrameElement 都没有 'document' 属性。关于 HTMLFrameElement 对象的详细信息,请参考 DOM-2 Interface HTMLFrameElement 中的内容。
关于 HTMLIFrameElement 对象的详细信息,请参考 DOM-2 Interface HTMLIFrameElement 中的内容。
问题描述
仅 IE Opera 支持使用 HTMLFrameElement.document 和 HTMLIFrameElement.document 属性得到框架页的 HTMLDocument 对象。这个属性是非标准的。造成的影响
如果试图通过 HTMLFrameElement 和 HTMLIFrameElement 对象的 'document' 属性获得框架页的 HTMLDocument 对象,在 FrireFox Chrome Safari 中将得到 'undefined'。受影响的浏览器
IE6 IE7 IE8 Opera问题分析
分析以下两组测试代码,他们分别尝试获取 HTMLFrameElement 和 HTMLIFrameElement 的 'document' 属性:<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script> window.onload=function(){ alert(document.getElementById("frame").document); }; </script> </head> <frameset> <frame id="frame" src="_content.html" /> </frameset> </html>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script> window.onload=function(){ alert(document.getElementById("iframe").document); }; </script> </head> <body> <iframe id="iframe" src="_content.html"></iframe> </body> </html>
以上测试用例中,只有 IE6 IE7 IE8 Opera 对两者均会得到一个 HTMLDocument 对象(即框架内页面的 document 对象),而其他浏览器返回的是 'undefined'。
注:以上测试与文档模式无关。
解决方案
使用 HTMLFrameElement 或 HTMLIFrameElement 对象的 contentWindow 属性得到该框架页的 window 对象应用,再访问其下的 document 对象。即把上述测试代码的 'XXX.document' 更改为 'XXX.contentWindow.document',如:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script> window.onload=function(){ alert(document.getElementById("iframe").contentWindow.document); }; </script> </head> <body> <iframe id="iframe" src="_content.html"></iframe> </body> </html>
相关文章推荐
- HTML知识汇总集合
- HTML中      等6种空白空格的区别
- html基础之表单
- html基础之强大的表格
- html之插入外部资源
- html之网页中的图片
- Web基础系列一、Html(网页结构)
- html 中内容的堆叠顺序 设置
- 关于HTML标签(元素)的那些事?
- 关于HTML标签(元素)的那些事?
- HTML中input type="text"和type="password" 显示的长度不一样
- HTML:table中的td文字隐藏并实现hover显示全部文字
- HTML article和section
- Play FrameWork scala.html页面关于变量的一些运算操作
- HTML之postion属性
- 常用HTML代码片段
- HTML文档meta标签的详解
- 将HTML文本框设为不可编辑文本框。
- outerHTML、innerHTML和innerText的区别
- HTML基础1