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

推荐订阅源

F
Fortinet All Blogs
Attack and Defense Labs
Attack and Defense Labs
V2EX - 技术
V2EX - 技术
O
OpenAI News
S
Secure Thoughts
H
Heimdal Security Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Schneier on Security
Schneier on Security
H
Hacker News: Front Page
S
Security Affairs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Proofpoint News Feed
The Register - Security
The Register - Security
GbyAI
GbyAI
Cloudbric
Cloudbric
MongoDB | Blog
MongoDB | Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
K
Kaspersky official blog
Forbes - Security
Forbes - Security
Y
Y Combinator Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
Hacker News - Newest:
Hacker News - Newest: "LLM"
The Cloudflare Blog
Recorded Future
Recorded Future
人人都是产品经理
人人都是产品经理
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Webroot Blog
Webroot Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog
T
Tor Project blog
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
V
V2EX
T
Tailwind CSS Blog
SecWiki News
SecWiki News
NISL@THU
NISL@THU
C
Check Point Blog

博客园 - 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。