javascript跨浏览器的属性判断方法


Posted in Javascript onMarch 16, 2014

今天在写代码的时候发现一个很容易出错的地方。当我们在声明变量时,常常会因为不同的 browser 有不同的 API 定义,然后用以下的写法来判断哪一个属性,例如:

var fullscreenElement = document.mozFullScreenElement || document.webkitFullscreenElement || document.fullscreenElement;

用||来检查要用哪一个 attribute。
不过要小心 javascript 的值当成条件时的判断。
例如:
var sLeft = window.screenLeft || window.screenX; //firefox use screenX
console.log(sLeft);

这段代码希望 screenLeft 会回传 window.screenLeft ,而在 firefox 会回传 window.screenX。
但是如果 screenLeft 刚好等於 0 的时候,就会进入||之后的条件了,接著就 gg 了。

因此建议在值的判断还是正统一点用 hasOwnProperty 或 typeof 来判断会比较精?省?BR>

var sLeft = window.screenLeft;
if( !window.hasOwnProperty('screenLeft')) sLeft = window.screenX;
Javascript 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
javascript遍历控件实例详细解析
Jan 10 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
Sep 27 Javascript
js实现创建删除html元素小结
Sep 30 Javascript
深入理解关于javascript中apply()和call()方法的区别
Apr 12 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
Jun 23 Javascript
react-native之ART绘图方法详解
Aug 08 Javascript
webpack本地开发环境无法用IP访问的解决方法
Mar 20 Javascript
用Node写一条配置环境的指令
Nov 14 Javascript
关于vue-cli3打包代码后白屏的解决方案
Sep 02 Javascript
JavaScript实现登录窗体
Jun 22 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 #Javascript
Jquery 在页面加载后执行的几种方式
Mar 14 #Javascript
javascript中interval与setTimeOut的区别示例介绍
Mar 14 #Javascript
JavaScript表单通过正则表达式验证电话号码
Mar 14 #Javascript
JavaScript运行时库属性一览表
Mar 14 #Javascript
JavaScript中按位“异或”运算符使用介绍
Mar 14 #Javascript
使用jQuery实现的掷色子游戏动画效果
Mar 14 #Javascript
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
Python实现的tab文件操作类分享
2014/11/20 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
python实现程序重启和系统重启方式
2020/04/16 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
生物科学专业个人求职信范文
2013/12/07 职场文书
房地产融资计划书
2014/01/10 职场文书
银行职员自我鉴定
2014/04/20 职场文书
入党介绍人评语
2014/05/06 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
中国世界遗产导游词
2015/02/13 职场文书
出国留学英文自荐信
2015/03/25 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android