谈谈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 相关文章推荐
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
Dec 31 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
jQuery动态产生select option下拉列表
Mar 15 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
Jul 31 Javascript
解决element ui select下拉框不回显数据问题的解决
Feb 20 Javascript
微信小程序实现抖音播放效果的实例代码
Apr 11 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
php基础知识:类与对象(1)
2006/12/13 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
javascript 闭包详解
2015/07/02 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python 忽略warning的输出方法
2018/10/18 Python
Django模板语言 Tags使用详解
2019/09/09 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书