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

2014-03-16 21

今天在写代码的时候发现一个很容易出错的地方。当我们在声明变量时,常常会因为不同的 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文章

基于jquery的无缝循环新闻列表插件
Mar 07 15
浅析document.createDocumentFragment()与js效率
Jul 08 31
Egret引擎开发指南之创建项目
Sep 03 11
JavaScript中继承用法实例分析
May 16 25
解决vue页面刷新或者后退参数丢失的问题
Mar 13 42
基于Vue插入视频的2种方法小结
Apr 02 29
使用imba.io框架得到比 vue 快50倍的性能基准
Jun 17 22
手机访问当前页面