谈谈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 相关文章推荐
建立良好体验度的Web注册系统ajax
Jul 09 Javascript
XML的代替者----JSON
Jul 21 Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 Javascript
js实现网页标题栏闪烁提示效果实例分析
Nov 20 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
JavaScript实现斗地主游戏的思路
Feb 29 Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 Javascript
AngularJS Ajax详解及示例代码
Aug 17 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 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
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
Python合并多个装饰器小技巧
2015/04/28 Python
python直接访问私有属性的简单方法
2016/07/25 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
Php多进程实现代码
2018/05/07 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
暑期培训随笔感言
2014/03/10 职场文书
科学发展观标语
2014/10/08 职场文书
领导班子整改措施
2014/10/24 职场文书
党的群众路线调研报告
2014/11/03 职场文书
工商局个人工作总结
2015/03/03 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python