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 相关文章推荐
对象的类型:本地对象(1)
Dec 29 Javascript
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
May 21 Javascript
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
JavaScript统计网站访问次数的实现代码
Nov 18 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
Feb 08 Javascript
详解element-ui设置下拉选择切换必填和非必填
Jun 17 Javascript
antd多选下拉框一行展示的实现方式
Oct 31 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开源建站平台小结
2010/04/22 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
常用的js方法合集
2017/03/10 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
教学改革实施方案
2014/03/31 职场文书
学习经验交流会主持词
2014/04/01 职场文书
监督检查工作方案
2014/05/28 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
介绍信怎么写
2015/01/30 职场文书
2015年团支书工作总结
2015/04/03 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书