获取行内样式

function getStyle(obj,attr){  //获取非行间样式,obj是对象,attr是值if(obj.currentStyle){                //针对ie获取非行间样式return obj.currentStyle[attr];}else{return getComputedStyle(obj,false)[attr];   //针对非ie}}

获取事件对象的兼容方式

document.onclick=function(eve){var e=eve || window.event;console.log(e);}

事件冒泡的兼容方法

function stopBubble(e){if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble = true;//兼容ie}}

阻止浏览器默认行为的兼容方法

 if( e.preventDefault ){e.preventDefault();}else{window.event.returnValue = false;//ie}

监听事件的设置和移除的兼容方式

// obj为dom对象 inci为事件名称 比如click back为回调函数
// attachEvent 是老版本浏览器使用的添加事件的方法,现在统一使用addEventListener
function addEvent(obj,inci,back){if(obj.addEventListener){obj.addEventListener(inci,back);}else if(obj.attachEvent){obj.attachEvent("on" + inci,back);}else{obj["on"+inci] = back;}}
// obj为dom对象 inci为事件名称 比如click back为回调函数
function removeEvent(obj,inci,back){if(obj.removeEventListener){obj.removeEventListener(inci,back,false);}else if(obj.detachEvent){obj.detachEvent("on" + inci,back);}else{obj["on"+inci] = null;}}

键盘事件的key值

// ie浏览器使用window.event.which
var eve = eve || window.event;
var keyC = eve.keyCode || eve.which;

时间格式

尽可能采用 YYYY/MM/DD HH:mm:ss
因为safari浏览器只支持YYYY/MM/DD HH:mm:ss这种格式,不支持YYYY-MM-DD HH:mm:ss

 "2016-06-10 12:00:00".split('-').join('/')

获取滚动条高度

function onscroll(){const scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;return scrollTop
}

innerText的问题

问题说明:innerText在IE中能正常工作,但是innerText在FireFox中却不行。
解决方法:在非IE浏览器中使用textContent代替innerText。

function setInnerText(dom,text) {if(navigator.appName.indexOf("Explorer") >-1){ dom.innerText = text; } else{ dom.textContent = text; }
}

尽量不使用setAttribute()

用setAttribute设置style和onclick这些属性,在IE中是行不通的。为达到兼容各种浏览器的效果,可以用点符号法来设置Element的对象属性、集合属性和事件属性。

const dom = document.getElementById('element');
dom.style.color = "#00f";

设置类名

function AddClass(vName) {element.setAttribute("class", vName);element.setAttribute("className", vName); //for IE
}

input.type属性问题

在ie浏览器下input.type是只读属性,不可以修改,如果要修改,最后移除掉原先的input元素,重新添加一个新的input元素

对象宽高赋值问题

问题说明:FireFox中类似 obj.style.height = imgObj.height 的语句无效。
解决方法:统一使用 obj.style.height = imgObj.height + ‘px’;

通过id获取dom

问题说明:IE下,可以使用 eval(”idName”) 或 getElementById(”idName”) 来取得 id 为 idName 的HTML对象;Firefox下,只能使用 getElementById(”idName”) 来取得 id 为 idName 的HTML对象。
解决方法:统一用 getElementById(”idName”) 来取得 id 为 idName 的HTML对象。

event.x与event.y问题

问题说明:IE下,even对象有x、y属性,但是没有pageX、pageY属性;Firefox下,even对象有pageX、pageY属性,但是没有x、y属性。

var myX = event.x ? event.x : event.pageX;
var myY = event.y ? event.y : event.pageY;

获取dom父元素

在IE下,使用 obj.parentElement 或 obj.parentNode 访问obj的父结点;在firefox下,使用 obj.parentNode 访问obj的父结点。

const children = document.getElementsByClassName('children')[0];
const parent = children.parentNode

访问、设置剪切板中的数据

要访问剪切板中的数据,可以使用clipboardData对象:IE中,这个对象是window对象的属性;而在Firefox,Chrome,Safar中,这个对象是event对象的属性。

const setClipboardText = function (event, value) {if (event.clipboardData) {return event.clipboardData.setData("text/plain", value);} else if (window.clipboardData) {return window.clipboardData.setData("text", value);}
};const getClipboardText = function (event) {const clipboardData = event.clipboardData || window.clipboardData;return clipboardData.getData("text");
};

常见js针对浏览器之间的兼容问题相关推荐

  1. html监听页面关闭事件,JS针对浏览器窗口关闭事件的监听方法集锦

    本文实例总结了JS针对浏览器窗口关闭事件的监听方法.分享给大家供大家参考,具体如下: 方式一:(适用于IE浏览器,而且刷新不提示,只在点击浏览器关闭按钮的时候提示) window.οnbefοreun ...

  2. html5中页面关闭事件监听,JS针对浏览器窗口关闭事件的监听方法集锦

    本文实例总结了JS针对浏览器窗口关闭事件的监听方法.分享给大家供大家参考,具体如下: 方式一:(适用于IE浏览器,而且刷新不提示,只在点击浏览器关闭按钮的时候提示) window.οnbefοreun ...

  3. 常见的IE浏览器的一些兼容问题及解决方法

    浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大. 碰到频率:100% 解决方案:CSS里    ...

  4. html 引入js 兼容,JS跨浏览器兼容性解决思路及方案汇总,常见JS兼容性知识点汇总...

    上篇文章我们介绍了,处理CSS浏览器兼容性的4个解决方案:浏览器CSS样式初始化.浏览器私有属性,CSS hack语法和自动化插件,有兴趣的可以看看,链接放到本文结尾 本文主要介绍JS的跨浏览器兼容性 ...

  5. [js] Geolocation.getCurrentPosition()用来做什么的?在什么浏览器不受兼容?

    [js] Geolocation.getCurrentPosition()用来做什么的?在什么浏览器不受兼容? 获取当前设备的位置 Android不支持 个人简介 我是歌谣,欢迎和大家一起交流前后端知 ...

  6. [js] 获取浏览器当前页面的滚动条高度的兼容写法

    [js] 获取浏览器当前页面的滚动条高度的兼容写法 document.documentElement.scrollTop || document.body.scrollTop; 个人简介 我是歌谣,欢 ...

  7. jquery.webcam.js实现调用摄像头拍照兼容各个浏览器

    jquery.webcam.js实现调用摄像头拍照兼容各个浏览器 1.demo 可直接复制使用,需要在环境里运行. 2.所需 js 文件和 swf 控件可在官方博客下载,地址http://www.xa ...

  8. scrolltop 原生js_解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法...

    最近在做博客的目录功能,发现一个在现代浏览器间的一个bug,或是称之为差异,即页面滚动值(scrollTop)的获取与设定. 在此之前先说一下关于页面元素的坐标获取,这张图的经典性不必再提. 实现滚动 ...

  9. 常见的css浏览器兼容问题

    常见的CSSbug和CSShack 先简单的介绍下五大浏览器的内核和代表作 Trident:IE MaxThon(遨游) .腾讯 . Theword(世界之窗) . 360浏览器 Gecko:Mozi ...

  10. 不同浏览器jsp开发兼容问题

    所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...

最新文章

  1. as3 中get和set的用法
  2. python 序列化函数_python – 如何序列化sympy lambdified函数?
  3. SCCM2012R2之二安装SQL Server
  4. MySQL count(*)这么慢,我该怎么办?
  5. tomcat配置一个线程来调试ThreadLocal的代码问题
  6. 如何获取Javascript module metadata的parent module
  7. C++基础复习——C++语言数据类型
  8. java自定义外部接口_如何使用可外部化的接口在Java中自定义序列化
  9. 在C# 获取当前应用网址
  10. CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法
  11. 在过去的12个月(2016)里,你用到的最多的算法或方法是什么?
  12. Python序列基本操作(三)
  13. [Tools 之]online bookmark 在线书签
  14. 韩顺平循序渐进学java 第21.22.23.24讲 集合
  15. MBR和GPT分区区别
  16. 怎么关闭Deep Freeze (冰点还原精灵单机版)
  17. 分享:STC-51激光雕刻机项目(免费完整资料)
  18. E212: Can‘t open file for writing:权限不够或者没有上级目录
  19. SpringBoot(三)配置文件
  20. Python骚操作 | 还原已撤回的微信消息

热门文章

  1. mac lnmp 安装mysql_Mac安装LNMP环境
  2. crr树不同步数期权定价 matlab,CRR二叉树模型和例题.doc
  3. Python初学系列——天天向上的力量
  4. Update批量更新
  5. 跟进分析不一样的MTI商城
  6. 中文和英语中主语、谓语、宾语、定语、状语、补语的定义
  7. Python识别图片中数字/数值的方法笔记
  8. 第三方APP实现QQ登陆
  9. u盘最大单个文件支持多少g_解决U盘拷贝时提示文件过大问题(不能拷贝超过4个g的文件)...
  10. 3GPP TS 29244-g30 中英文对照 | 7.3 Message Types