标准参考

根据 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>

最新文章

  1. iOS缓存框架-PINCache解读
  2. js实现图片滑动显示效果
  3. pygame学习
  4. 进军的socket
  5. Swing——布局管理器
  6. SpringMVC拦截器与异常处理
  7. openstack之Neutron网络虚拟化
  8. taro中子父传值
  9. 笔记02 linux的一些命令sed
  10. flask连接mysql数据库
  11. Fastjson和Gson零碎总结
  12. React 设计思想
  13. mybatis 错误: There is no getter for property named &#39;*&#39; in &#39;class java.lang.String解决
  14. Machine Learning系列--L0、L1、L2范数
  15. e2fsprogs 移植
  16. Google I/O完整盘点,这才是地球上最「性感」的发布会
  17. [WIP]Vue 基础
  18. jsp get与post请求乱码问题
  19. filename extension
  20. DOCTYPE的使用

热门文章

  1. Ext.Form 自动填写表单内容
  2. [HDU 4585] Shaolin (map应用)
  3. FPGA一个博客学习
  4. Hive表数据导出
  5. Flex4+BlazeDS+JAVA+MySql 构建J2EE工程 对用户信息进行管理实例
  6. Android Studio使用中的小常识
  7. java.lang.IllegalArgumentException
  8. TCP/IP详解学习笔记(14)-- TCP可靠传输的实现
  9. check version cordova
  10. oracle 游标示例