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在IE和Firefox浏览器下的7个差异兼容写法小结
Jun 18 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 Javascript
javascript 广告移动特效的实现代码
Jun 25 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
vue-router实现webApp切换页面动画效果代码
May 25 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
详解JavaScript栈内存与堆内存
Apr 04 Javascript
JS实现简易留言板特效
Dec 23 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 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
PHP学习之数组值的操作
2011/04/17 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
CURL状态码列表(详细)
2013/06/27 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
jQuery学习笔记之Helloworld
2010/12/22 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
自我推荐书
2013/12/04 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android