浏览器兼容性随手记:Javascript
1.event
IE9以下不支持直接获取event对象,所以需要写兼容:
var event = event?event:window.event;
IE8以下不支持event.target,但是可以通过event.srcElement来兼容:
var eventTarget = event.srcElement?event.srcElement:event.target;
2.document.getElementsByClassName("...")
IE8以下不支持,暂时没有解决办法;只能针对当前代码做Hack
3.new Date( str )格式错误
如果str不是标准的时间格式"2014/12/9"之类的字符串,new Date会失败并返回一个错误结果;
在Chrome下返回的是Invalid Date,在IE下返回的是NaN;
在做错误结果处理时,记得带上NaN
4.getYear 获取年份
在IE中拿到的是正常的2014,2013数值,而在Chrome等浏览器里拿到的是114,113,比正常年份少了个1900;获取完整年份应该使用getFullYear()函数,在各个浏览器内拿到的都是2014、2013等正常的年份数值
5.stopPropagation 阻止冒泡
IE9一下不支持使用event.stopPropagation()函数,应使用event.cancelBubble = true;
var e = event?event:window.event;
if (e.stopPropagation) {
e.stopPropagation();
}
else{
e.cancelBubble = true;
}
6.setAttribute函数
节点可以调用setAttribute函数来设置属性,但是ie7以下不支持通过该函数添加:class,cellspacing,cellpadding,onclick等
如果直接用setAttribute,那么在ie7中新建的节点就没有样式且绑定事件失效。
解决办法是直接通过属性进行赋值:(高级浏览器已向下兼容)
node.className = "lee_calender";
tableNode.cellSpacing = 0;
tableNode.cellPadding = 0;
点击事件的话,还是直接用addEventListener来绑定吧,但是要注意看下一条
7.addEventListener("click",function(){......})函数
该函数在ie6,7下失效,ie6,7应使用attachEvent函数,并且绑定事件为"onclick","onmouseover" 等
不妨写一个兼容函数
function bindEvent(obj,eve,method){
if(obj.addEventListener){
obj.addEventListener(eve,method);
}
else{
eve = "on"+eve;
obj.attachEvent(eve,method);
}
}
调用时,直接bindEvent(document.getElementById("INPUT"),"click",function(){.......});
8.console.log()
console.log()函数在ie7,8下不能直接调用,ie7,8默认console是未初始化的
所以版本发布之前记得用grunt对js文件进行压缩,删除这些测试时写的console.log
9.ajax相关
*在ajax中,IE6以下不支持new XMLHttpRequest()。
兼容性的类为new ActiveXObject("Microsoft.XMLHTTP");
*IE浏览器中还存在ajax缓存的问题,可以通过以下办法:服务端在header设置cache:no-cache;前端ajax请求是可以在url后拼接时间戳;jQuery$.ajax中缓存可控
10.移动端浏览器全屏
UC:
<meta name="full-screen" content="yes">
<meta name="browsermode" content="application">
QQ:
<meta name="x5-orientation" content="portrait">
<meta name="x5-fullscreen" content="true">
<meta name="x5-page-mode" content="app">
---遇到一些更一些,该好好记下浏览器兼容性及解决办法的知识点了-----
浏览器兼容性随手记:Javascript的更多相关文章
- javascript中new Date浏览器兼容性处理
看下面的代码 <script type="text/javascript"> var dt1 = new Date('2016-3-4 11:06:12'); aler ...
- javascript IE与其他主流浏览器兼容性问题积累
javascript兼容性问题 在javascript中,各个浏览器基本语法差距不大,其兼容问题主要出现在各个浏览器的实现上,尤其对事件的支持有很大问题,在此我就说说我知道的几个问题. ① 在标准的事 ...
- JAVASCRIPT 浏览器兼容性问题及解决方案列表
JAVASCRIPT 浏览器兼容性问题及解决方案列表(1)获取HTML元素只兼容IE:document.all.hello hello 兼容所有: document.getElementById(“h ...
- CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- CSS 多浏览器兼容性问题及解决方案
兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 ...
- 浏览器兼容性之Css篇
本文与上一篇随笔<浏览器兼容性之Javascript篇>有一定关联,下来我会继续不断总结,旨在解决浏览器兼容性,对遇到类似问题的同仁有所帮助,如有更多解决浏览器兼容性的案例还望大家分享一起 ...
- 浏览器兼容性小整理和一些js小问题(后面会继续更新)
最近在啃jQuery的源码,估计会啃到很多浏览器兼容性的问题,所以整理一下 1,IE下的内存泄露. 在IE中不在DOM树中的独立节点有javascript变量引用它的时候不会被回收. 解决:手动将该j ...
- web前端开发浏览器兼容性 - 持续更新
浏览器兼容性问题又被称为网页或网站兼容性问题:不同浏览器内核及所支持的html等网页语言标准不同,不同客户端环境(如分辨率不同)造成实际显示效果未能达到预期理想效果 首先我们来看一下目前市面上常见的一 ...
- Web浏览器兼容性测试工具如何选择
对于前端开发工程师来说,网页兼容性测试工程师而言,确保代码在各种主流浏览器的各个版本中都能正常工作是件很费时的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,领测软件测试网向您推荐12款很 ...
随机推荐
- 微博短链接的生成算法(Java版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...
- git 回退到制定commit
git clone XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX git log -5 // 查看最近5个commit 回退命令:$ git reset --hard HEAD^ ...
- [置顶]
caffe+CPU︱虚拟机+Ubuntu16.04+CPU+caffe安装笔记
由于虚拟机下的Ubuntu系统一般不包含GPU,故这次安装时为了在无GUP环境下运行caffe.所以只需安装CPU版本的caffe 由于本机是window10系统,所以想尝试caffe就在自己电脑上整 ...
- javascript使用bind指定接收者
var json = { jArray: [], jPush: function (c) { this.jArray.push(c); } } var examp = ["123" ...
- lambda架构简介
1.Lambda架构背景介绍 Lambda架构是由Storm的作者Nathan Marz提出的一个实时大数据处理框架.Marz在Twitter工作期间开发了著名的实时大数据处理框架Storm,Lamb ...
- EF 汇总函数使用注意事项Max()/Min()等
一.字符串类型最大值 1.字符串类型的最大值,和数据库的字典排序最后一个相同,如果存在返回null //字符串最大值,是字典排序最后一个 string max1 = _context.students ...
- leetcode225
public class MyStack { Queue<int> Q = new Queue<int>(); /** Initialize your data structu ...
- WebFont-前端字体
WebFont-前端字体 前端设计时使用了一些不常用的字体,如何在客户的浏览器中正确展示? 解决方案是使用webfont,将字体置于服务端,利用 css 中的font-family进行设置,客户端展现 ...
- Jboss:The LogManager was not properly installed (you must set the "java.util.logging.manager" system prop
可能是jboss的服务器版本选择不对 ,比如我本地的Jboss服务器版本是 jboss-as-web-7.0.2.Final,选择的服务器版本是JBOOS V7.1 Runtime ,就会报上面 ...
- jquery ui的css设计二
上一篇见这里 本篇重点说一下其换肤功能 换肤一般是指改变控件的字体颜色,背景颜色,边框颜色,hover上去的颜色,背景图片,很少再会涉及修改其长宽,字体类型什么的. 以这个版本的CSS为观察对象,可以 ...