谈谈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 相关文章推荐
js类的静态属性和实例属性的理解
Oct 01 Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
js判断手机和pc端选择不同执行事件的方法
Jan 30 Javascript
location.hash保存页面状态的技巧
Apr 28 Javascript
基于bootstrap实现广告轮播带图片和文字效果
Jul 22 Javascript
jQuery组件easyui对话框实现代码
Aug 25 Javascript
80%应聘者都不及格的JS面试题
Mar 21 Javascript
vue单页应用中如何使用jquery的方法示例
Jul 27 jQuery
Vue-cli3项目配置Vue.config.js实战记录
Jul 29 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
Aug 09 Javascript
node将geojson转shp返回给前端的实现方法
May 29 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
Nov 04 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如何抛出异常处理错误
2011/03/02 PHP
php验证码实现代码(3种)
2015/09/07 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
JS验证码实现代码
2017/09/14 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
python图像处理之镜像实现方法
2015/05/30 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
英国日常交易网站:Wowcher
2018/09/04 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
配置管理计划的主要内容有哪些
2014/06/20 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
杭州黄龙洞导游词
2015/02/10 职场文书
解决Oracle数据库用户密码过期
2022/05/11 Oracle
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android