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 相关文章推荐
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
解决jQuery插件tipswindown与hintbox冲突
Nov 05 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
Sep 09 Javascript
被遗忘的javascript的slice() 方法
Apr 20 Javascript
Js实现简单的小球运动特效
Feb 18 Javascript
jQuery ready()和onload的加载耗时分析
Sep 08 Javascript
再谈javascript注入 黑客必备!
Sep 14 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 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
一个捕获函数输出的函数
2007/02/14 PHP
php whois查询API制作方法
2011/06/23 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
Python subprocess模块学习总结
2014/03/13 Python
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
网络技术专业求职信
2014/07/13 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
欢迎词范文
2015/01/27 职场文书
个人先进事迹总结
2015/02/26 职场文书