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 学习历程和心得分享
Dec 12 Javascript
Jquery为a标签的href赋值实现代码
May 03 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
Jun 08 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
php基于redis处理session的方法
Mar 14 Javascript
Vue概念及常见命令介绍(1)
Dec 08 Javascript
JS设置时间无效问题的解决办法
Feb 18 Javascript
Javascript ES6中数据类型Symbol的使用详解
May 02 Javascript
vue不通过路由直接获取url中参数的方法示例
Aug 24 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 Javascript
vue实现评论列表功能
Oct 25 Javascript
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
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 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
详解javascript高级定时器
2015/12/31 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
创业计划书的内容步骤和要领
2014/01/04 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
部门2015年度工作总结
2015/04/29 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书