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编写的[打豆豆]小游戏
Jan 08 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
javascript基于DOM实现省市级联下拉框的方法
May 14 Javascript
js操作cookie保存浏览记录的方法
Dec 25 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
May 12 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
May 26 Javascript
基于jQuery实现数字滚动效果
Jan 16 Javascript
Vue CLI3基础学习之pages构建多页应用
Jun 02 Javascript
JavaScript中callee和caller的区别与用法实例分析
Jun 28 Javascript
浅析vue-router实现原理及两种模式
Feb 11 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 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
使用无限生命期Session的方法
2006/10/09 PHP
关于php fread()使用技巧
2010/01/22 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
python实现排序算法
2014/02/14 Python
python实现telnet客户端的方法
2015/04/15 Python
Python类属性与实例属性用法分析
2015/05/09 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
2015年党员公开承诺书范文
2015/01/22 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书