JavaScript 浏览器兼容性总结及常用浏览器兼容性分析


Posted in Javascript onMarch 30, 2016

本文是三水点靠木小编日常整理些关于js兼容性问题,及IE与Firefox等常用浏览器的兼容性分析,对js浏览器兼容性相关知识感兴趣的朋友一起学习吧!

1. children与childNodes

IE提供的children、childNodes和firefox下的childNodes的行为是有区别的,firefox下childNodes会把换行和空白字符都算作父节点的子节点,而IE的childNodes和children不会。比如:

<div id="dd">
<div>yizhu2000</div>
</div>

d为dd的div在IE下用childNodes查看,其子节点数为1,而ff下为三,我们可以从firefox的dom查看器里面看到他的childNodes为["\n ", div, "\n"]。

要在firefox下模拟children的属性我们可以这样做:

if (typeof(HTMLElement) != "undefined" && !window.opera) {
HTMLElement.prototype.__defineGetter__("children", function() {
for (var a = [], j = 0, n, i = 0; i < this.childNodes.length; i++) {
n = this.childNodes[i];
if (n.nodeType == 1) {
a[j++] = n;
if (n.name) {
if (!a[n.name])
a[n.name] = [];
a[n.name][a[n.name].length] = n;
}
if (n.id)
a[n.id] = n;
}
}
return a;
});
}

2. firefox和ie的事件

window.event只能在IE下使用,而不能用在Firefox下,这是因为Firefox的event只能在事件发生的现场使用。 Firefox必须从源处加入event作参数传递。IE忽略该参数,用window.event来读取该event。

比方说下面这个在ie下获得鼠标位置的方法:

<button onclick="onClick()" >获得鼠标点击横坐标</button>
<script type="text/javascript">
function onclick(){
alert(event.clientX);
}
</script>

需要改成

<button onclick="onClick(event)">获得OuterHTML</button>
<script type="text/javascript">
function onclick(event){
event = event || window.event;
alert(event.clientX);
}
</script>

才能在两种浏览器下使用

3.HTML对象获取问题

FireFox获取方式document.getElementById("idName")

ie使用document.idname或者document.getElementById("idName")

解决办法:统一使用document.getElementById("idName");

4. const问题

在Firefox下,可以使用const关键字或var关键字来定义常量;

IE下,只能使用var关键字来定义常量;

解决方法:统一使用var关键字来定义常量。

5.frame问题

以下面的frame为例:

<frame src="xxx.html" id="frameId" name="frameName" />

a)访问frame对象

IE:使用window.frameId或者window.frameName来访问这个frame对象,frameId和frameName可以同名;

Firefox:只能使用window.frameName来访问这个frame对象;

另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")来访问这个frame对象;

b) 切换frame内容

在 IE和Firefox中都可以使用

window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"

来切换frame的内容;

如果需要将frame中的参数传回父窗口(注意不是opener,而是parent),可以在frame中使用parent来访问父窗口。例如:

parent.document.form1.filename.value="Aqing";

6. body问题

Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在;

7. firefox与IE的父元素(parentElement)的区别

IE:obj.parentElement

firefox:obj.parentNode

解决方法:因为firefox与IE都支持DOM,因此全部使用obj.parentNode

8.innerText的问题

innerText在IE中能正常工作,但是innerText在FireFox中却不行,需用textContent;

解决方法:

if (navigator.appName.indexOf("Explorer") > -1) {
document.getElementById('element').innerText = "my text";
} else {
document.getElementById('element').textContent = "my text";
}

9.AJAX获取XMLHTTP的区别

var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} elseif (window.ActiveXObject) { // IE的获取方式
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

注意:在IE中,xmlhttp.send(content)方法的content可以为空,而firefox则不能为null,应该用send(""),否则会出现411错误。

关于本文给大家介绍的JavaScript 浏览器兼容性总结及常用浏览器兼容性分析,小编就给大家介绍到这里,希望对大家有所帮助!

Javascript 相关文章推荐
JavaScript 动态生成方法的例子
Jul 22 Javascript
js中eval详解
Mar 30 Javascript
基于JavaScript自定义构造函数的详解说明
Apr 24 Javascript
jQuery的live()方法对hover事件的处理示例
Feb 27 Javascript
javascript实例分享---具有立体效果的图片特效
Jun 08 Javascript
js实现的类似于asp数据字典的数据类型代码实例
Sep 03 Javascript
javascript判断变量是否有值的方法
Apr 20 Javascript
js实现图片上传并正常显示
Dec 19 Javascript
基于JavaScript实现的快速排序算法分析
Apr 14 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
微信接入之获取用户头像的方法步骤
Sep 23 Javascript
深入分析jQuery.one() 函数
Jun 03 jQuery
JavaScript 不支持 indexof 该如何解决
Mar 30 #Javascript
React.js入门学习第一篇
Mar 30 #Javascript
Node.js操作mysql数据库增删改查
Mar 30 #Javascript
基于React.js实现原生js拖拽效果引发的思考
Mar 30 #Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 #Javascript
jQuery表格插件datatables用法汇总
Mar 29 #Javascript
基于javascript实现tab切换特效
Mar 29 #Javascript
You might like
php查找任何页面上的所有链接的方法
2013/12/03 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python爬虫基本知识
2018/03/05 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
房产销售独家委托书范本
2014/10/01 职场文书
高二数学教学反思
2016/02/18 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技