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 相关文章推荐
extjs form textfield的隐藏方法
Dec 29 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
二叉树先序遍历的非递归算法具体实现
Jan 09 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
js 判断附件后缀的简单实现方法
Oct 11 Javascript
Vue.js结合bootstrap实现分页控件
Mar 10 Javascript
express+mockjs实现模拟后台数据发送功能
Jan 07 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
Jan 23 Javascript
Vue 样式绑定的实现方法
Jan 15 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
Apr 14 Javascript
JS异步宏队列与微队列原理区别详解
Jul 02 Javascript
swiper自定义分页器的样式
Sep 14 Javascript
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
新52大事件
2020/03/03 欧美动漫
一个程序下载的管理程序(二)
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php格式化电话号码的方法
2015/04/24 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
JavaScript中的类继承
2010/11/25 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
javascript原型模式用法实例详解
2015/06/04 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
Python中正则表达式的用法实例汇总
2014/08/18 Python
详解详解Python中writelines()方法的使用
2015/05/25 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
医药营销个人求职信范文
2014/02/07 职场文书
挂职学习心得体会
2014/09/09 职场文书
工作会议通知
2015/04/15 职场文书
Python3 如何开启自带http服务
2021/05/18 Python