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 相关文章推荐
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
Oct 29 Javascript
JQuery中dataGrid设置行的高度示例代码
Jan 03 Javascript
js函数内变量的作用域分析
Jan 12 Javascript
PHP实现的各种中文编码转换类分享
Jan 23 Javascript
JavaScript获取表单enctype属性的方法
Apr 02 Javascript
JavaScript DOM事件(笔记)
Apr 08 Javascript
全面了解js中的script标签
Jul 04 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
Jul 19 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
Angular 2应用的8个主要构造块有哪些
Oct 17 Javascript
Canvas实现动态的雪花效果
Feb 13 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 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
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
Python实现的列表排序、反转操作示例
2019/03/13 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
人事文员岗位职责
2014/02/16 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
学校消防安全责任书
2014/07/23 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
出生证明格式
2015/06/15 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
Python中json.dumps()函数的使用解析
2021/05/17 Python
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript