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 04 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
Apr 26 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
Nov 14 Javascript
JS阻止用户多次提交示例代码
Mar 26 Javascript
JavaScript获取路径设计源码
May 22 Javascript
jQuery中slice()方法用法实例
Jan 07 Javascript
Javascript基础教程之if条件语句
Jan 18 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
Jul 01 Javascript
自制微信公众号一键排版工具
Sep 22 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
Feb 12 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
curl和libcurl的区别简介
2015/07/01 PHP
php生成HTML文件的类方法
2019/10/11 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
js window.event对象详尽解析
2009/02/17 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
Python的Django框架中的表单处理示例
2015/07/17 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
佳能英国官方网站:Canon UK
2017/08/08 全球购物
迟到检讨书500字
2014/02/05 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
三八妇女节寄语
2015/02/27 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
团结主题班会
2015/08/13 职场文书
国庆节主题班会
2015/08/15 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS