Javascript多种浏览器兼容写法分析第1/3页

 更新时间:2008年09月02日 00:44:44   作者:  
随着以Firefox为代表的第三方浏览器的兴起,我们做的网站也不能再JUST IE了,如果把原来的一些javascript代码放到IE以外的浏览器的话,往往都不能正常运行或出错,所以这里介绍一下怎么改进我们的JS,让它能更加规范,更加具有兼容性。
示例代码:
<body>
<table border="1" cellspacing="0" cellpadding="0" id="apple" >
<tbody>
<tr>
<td id="banana" style="color:red" >不吃苹果</td>
</tr>
</tbody>
</table>
</body>

尽量采用W3C DOM 的写法

以前访问对象可能是:
document.all.apple 或者 apple
现在应该采用:
document.getElementById("apple") 以ID来访问对象,且一个ID在页面中必须是唯一的
document.getElementsByTagName("div")[0] 以标签名来访问对象

原来设置对象的属性可能是:
document.all.apple.width=100 或 apple.width=100
现在应该采用:
document.getElementById("apple").setAttribute("width","100")
document.getElementsByTagName("div")[0].setAttribute("width","100")
访问对象的属性则采用:
document.getElementById("apple").getAttribute("width")
document.getElementsByTagName("div")[0].getAttribute("width")

W3C DOM在IE下的一些限制

因为起先的IE占据整个浏览器95%的份额,没有竞争压力,所以这位老大就硬是要玩点另类,不完全按WEB标准来搞。

在IE下不能正确使用setAttribute来设置对象的style、class以及事件响应属性,
因此我还得按原来的点记法来访问和设置,以达到兼容各种浏览器的效果,如:
document.getElementById("banana").class
document.getElementById("banana").style.color
document.getElementById("banana").onclick
document.getElementById("banana").class="fruit"
document.getElementById("banana").style.color="blue"
document.getElementById("banana").onclick= function (){alert("我是香蕉")}

关于Firefox下的onload问题

function over(){
alert("页面加载完毕")
}

正常情况下,我们赋与onload响应函数是:
document.body.onload= over
但是在Firefox下这样无法执行,
所以我们都都采用下面这种形式:
window.onload=over

关于IE下TABLE无法插入新行的问题

IE下TABLE无论是用innerHTML还是appendChild插入<tr>都没有效果,而其他浏览器却显示正常。解决他的方法是,将<tr>加到TABLE的<tbody>元素中,如下面所示:

var row = document.createElement("tr");
var cell = document.createElement("td");
var cell_text = document.createTextNode("香蕉不吃苹果");
cell.appendChild(cell_text);
row.appendChild(cell);
document.getElementsByTagName("tbody")[0].appendChild(row);

相关文章

  • javascript 深拷贝

    javascript 深拷贝

    突然问起我以前的函数,我也会愣一下,心想,真烂!我总是喜欢把最好的东西分享给大家的,以前的大家忘掉吧。
    2010-03-03
  • JavaScript继承学习笔记【新手必看】

    JavaScript继承学习笔记【新手必看】

    下面小编就为大家带来一篇JavaScript继承学习笔记。小编觉得挺不错的,现在分享给大家,也给大家做个参考
    2016-05-05
  • 详解js location.href和window.open的几种用法和区别

    详解js location.href和window.open的几种用法和区别

    这篇文章主要介绍了详解js location.href和window.open的几种用法和区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • javascript动态添加删除tabs标签的方法

    javascript动态添加删除tabs标签的方法

    这篇文章主要介绍了javascript动态添加删除tabs标签的方法,实例分析了javascript针对tabs标签的动态添加与删除方法,涉及javascript页面元素的操作技巧,需要的朋友可以参考下
    2015-07-07
  • JavaScript获取URL参数的方法分享

    JavaScript获取URL参数的方法分享

    这篇文章主要介绍了JavaScript获取URL参数的方法分享,主要包括字符串 split 方法、 URLSearchParams 方法、正则匹配方法等,具有一定的参考价值需要的小伙伴可以参考一下
    2022-04-04
  • javascript表格控件:Chgrid,简化型

    javascript表格控件:Chgrid,简化型

    javascript表格控件:Chgrid,简化型...
    2007-04-04
  • 解决option标签selected=

    解决option标签selected="selected"属性失效的问题

    下面小编就为大家带来一篇解决option标签selected="selected"属性失效的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望对大家有所帮助
    2017-11-11
  • js和C# 时间日期格式转换的简单实例

    js和C# 时间日期格式转换的简单实例

    下面小编就为大家带来一篇js和C# 时间日期格式转换的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • javascript伸缩型菜单实现代码

    javascript伸缩型菜单实现代码

    这是一款真正的JavaScript伸展收缩型菜单,鼠标放上看一看,是不是很酷?鼠标划出菜单项的时候,背景会伸长。菜单没有加链接,想用的自己加,再美化一下,绝对够个性吧。
    2015-11-11
  • javascript比较两个日期相差天数的方法

    javascript比较两个日期相差天数的方法

    这篇文章主要介绍了javascript比较两个日期相差天数的方法,涉及javascript针对日期的转换与数学运算相关技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07

最新评论