谈谈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 相关文章推荐
javascript简单实现命名空间效果
Mar 06 Javascript
JavaScript限定图片显示大小的方法
Mar 11 Javascript
javascript通过元素id和name直接取得元素的方法
Apr 28 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
Oct 21 Javascript
WebPack基础知识详解
Jan 16 Javascript
原生JS实现图片懒加载(lazyload)实例
Jun 13 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
vue文件运行的方法教学
Feb 12 Javascript
三步实现ionic3点击退出app程序
Sep 17 Javascript
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
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
自定义session存储机制避免会话保持问题
2014/10/08 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
网页自动跳转代码收集
2009/09/27 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
深入理解Promise.all
2018/08/08 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
中软国际Java程序员机试题
2012/08/19 面试题
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
董事长岗位职责
2015/02/13 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书