谈谈JavaScript中浏览器兼容问题的写法小议


Posted in Javascript onDecember 17, 2016

前言

JavaScript中很多坑,其中对浏览器的兼容也是一个问题,本文就简略的归纳了部分针对浏览器兼容问题的写法的例子,旨在便于查找。如果读者有什么好的意见建议,请留言交流,谢谢!

window窗口大小

1.在IE9+、Chrome、Firefox、Opera以及Safari中

window.innerHeight获取浏览器窗口的内部高度

window.innerWidth获取浏览器窗口的内部宽度

var msg = "窗口宽度:" + window.innerHeight + "\n窗口高度:" + window.innerWidth;
alert(msg );

2.在IE5/6/7/8(Chrome和Firefox也支持)

document.documentElement.clientHeight

document.documentElement.clientWidth

var msg = "窗口宽度:" + document.documentElement.clientWidth + "\n窗口高度:" + document.documentElement.clientHeight;
alert(msg);

3.兼容写法(可以涵盖所有的浏览器)

就是把前两者的写法相 “或”。

var w = window.innerWidth || document.documentElement.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight;
alert("窗口宽度:" + w + "\n窗口高度:" + h);

获取内部样式表和外部样式表

1.对IE浏览器:对象.currentStyle[“属性名”]

2.其他浏览器:window.getComputedStyle(对象, null)[“属性名”]

注意:内部样式表中的属性和外部样式表中的属性只能获取不能修改。如果想修改需要通过行间样式表修改,行间样式表的优先级最高,会覆盖内部样式表和外部样式表。

为了简化书写和兼容浏览器,一般封装一个方法。如下列。

<body>
  <div id="box1"></div>
  <script type="text/javascript">
    var box1 = document.getElementById("box1");
    // alert(box1.currentStyle["width"]); //只支持IE浏览器
    // alert(window.getComputedStyle(box1, null)["height"]); //支持浏览器外的其他浏览器
    alert(getStyle(box1, "backgroundColor"));
    /*
      为了简化书写和兼容浏览器,一般封装一个方法出来
    */
    function getStyle (obj, attributeName) {  
      if(obj.currentStyle){  //如果存在对象,则是在ie浏览器
        return obj.currentStyle[attributeName];
      }else { //其他浏览器
        return window.getComputedStyle(obj, null)[attributeName];
      }
    }
  </script>
</body>

onscroll事件

<script type="text/javascript">
   window.onscroll = function () {
    console.log("开始滚动...");
    //跨浏览器获得滚动的距离
    console.log(document.documentElement.scrollTop | document.body.scrollTop);
  }
</script>

事件对象

box.onclick = function(event) {
      event = event || window.event;
      console.log("offsetX:" + event.offsetX + " offsetY:" + event.offsetY);
      console.log("screenX:" + event.screenX + " screenY:" + event.screenY);
      console.log("clientX:" + event.clientX + " clientY:" + event.clientY);
      console.log("pageX:" + event.pageX + " pageY: " + event.pageY);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 基础学习笔记
May 29 Javascript
JavaScript游戏之优化篇
Nov 08 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
Dec 23 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
jQuery源码解读之removeAttr()方法分析
Feb 20 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
Oct 28 Javascript
React.js入门学习第一篇
Mar 30 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
Jul 07 Javascript
JS动态给对象添加事件的简单方法
Jul 19 Javascript
Bootstrap Table使用方法详解
Aug 01 Javascript
jQuery Password Validation密码验证
Dec 30 Javascript
一秒学会微信小程序制作table表格
Feb 14 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 #Javascript
深入理解JS继承和原型链的问题
Dec 17 #Javascript
Bootstrap CSS组件之输入框组
Dec 17 #Javascript
原生js验证简洁注册登录页面
Dec 17 #Javascript
javascript 数组去重复(在线去重工具)
Dec 17 #Javascript
jQuery Validate验证框架详解(推荐)
Dec 17 #Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 #Javascript
You might like
德劲1103二次变频版的打磨
2021/03/02 无线电
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
Python3学习urllib的使用方法示例
2017/11/29 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
探矿工程师自荐信
2014/01/24 职场文书
教育技术职业规划范文
2014/03/04 职场文书
师范生自我鉴定
2014/03/20 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
人事局接收函
2015/01/31 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL