惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
MongoDB | Blog
MongoDB | Blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
D
Docker
云风的 BLOG
云风的 BLOG
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
GbyAI
GbyAI
T
Tailwind CSS Blog
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
C
Check Point Blog
I
InfoQ
Microsoft Azure Blog
Microsoft Azure Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
N
Netflix TechBlog - Medium
B
Blog RSS Feed
腾讯CDC
aimingoo的专栏
aimingoo的专栏

博客园 - finema

如何使用 RESTClient 调试微信支付接口 关于HTML使用ComDlg ActiveX 无法弹出相应对话框的问题1 JAX-WS 访问SSL 的WebService 老是HTTP transport error: Connection refused错误的解决办法。 [转]为什么开发人员工作10多年了还会迷茫?没有安全感? VC项目配置详解(转) 不使用动态sql语句,正确书写case when中的null处理 [转] 请不要做浮躁的嵌入式系统工程师 [转]一些Eclipse开发用到的快捷键 Tomcat 6.0.24 不兼容的APR版本问题 【转】看清自己究竟要什么 [转]7大原因,决定去留 [转]Android系统源代码情景分析:基础知识 关于iReport 导出文件的问题 谁是企业最需要的人(链接) 【转】什么是AlphaBlend技术 软件开发精品教程或文章 【转】WinCE读写XML文件 理解windows的移动原点 WinCE 不支持 ON_WM_SHOWWINDOW 事件的变通处理
IE 和 FireFox 对 DOM 支持的差异
finema · 2011-07-08 · via 博客园 - finema

1、document.getElementById的差异

请在 IE 和 FireFox 分别打开 包含以下代码的页面。

<html>
<head>
<script type="text/javascript">
function getValue()
{
  var x=document.getElementById("frmTest")
 
  if (x)
    alert(x.innerHTML)
  else
    alert("不能找到frmTest") 
}
</script>
</head>

<body>
  <FORM onsubmit="return false" method=post name="frmTest">
   <INPUT TYPE="Text" NAME="txtInput" value="123">
  </FORM>
  <BUTTON name= "btnTest" onclick="getValue()">测试</BUTTON>
</body>
</html>

点击“测试”按钮,

  在 IE 中显示的内容是: <INPUT TYPE=Text NAME=txtInput value=123>

  在 FireFox 中显示的内容却是:不能找到frmTest

实践表明,FireFox 对DOM 的处理比 IE 更严格更严谨(IE默认做了一些特别的转换)。因此为了提高浏览器处理getElementById的兼容性,应该在编写 HTML 时,元素的id 和 name 都应该设置上。

以上代码,修改成   <FORM onsubmit="return false" method=post name="frmTest" id="frmTest"> ,那么点击“测试”按钮,得到的结果将是我们所期待的。

代码在IE8, FF4,FF5,测试通过。

2、IE8 的调试

    对于使用JavaScipt 动态改变元素事件处理函数的,在IE8 调试界面里的HTML树中是无法看见的,如以下代码

<html>
<head>
<script type="text/javascript">
function getValue()
{

  var btn=document.getElementById("btnTest")
  if (btn)
  {
    alert(btn.outerHTML)
   
    btn.value = "测试2"
    btn.onclick=function(){GetValue2()}
  }
  else
    alert("不能找到btnTest")
 
}

function GetValue2()
{
  var btn=document.getElementById("btnTest")
  if (btn)
  {
   alert(btn.outerHTML)
  }
   
}
</script>
</head>

<body>
  <FORM onsubmit="return false" method=post name="frmTest" id="frmTest">
   <INPUT TYPE="Text" NAME="txtInput"  value="123">
  </FORM>
  <BUTTON id= "btnTest" name="btnTest" onclick="getValue()">测试</BUTTON>
</body>
</html>

当点击"测试"按钮,结果显示为  <BUTTON id= btnTest name=btnTest onclick=getValue()>测试</BUTTON>

当点击"测试2"按钮,结果显示为  <BUTTON id= btnTest name=btnTest>测试2</BUTTON>

3、outerHTML

   outerHTML不是标准HTML的元素属性,是 IE 自己扩展的, FirefFox 不支持outerHTML。