谈谈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 相关文章推荐
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
Aug 11 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Sep 04 Javascript
实例分析js和C#中使用正则表达式匹配a标签
Nov 26 Javascript
JavaScript中的变量定义与储存介绍
Dec 31 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
Aug 24 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 Javascript
JsonProperty 的使用方法详解
Oct 11 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
Jan 07 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP中的事务使用实例
2015/05/26 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
javascript事件模型代码
2007/07/01 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
python解析xml文件实例分享
2013/12/04 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
Android面试题附答案
2014/12/08 面试题
大学生毕业自荐信
2013/10/10 职场文书
科室工作个人总结的自我评价
2013/10/29 职场文书
厨师岗位职责
2013/11/12 职场文书
初一学生期末评语
2014/04/24 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书