`

2 不要检测版本,要检测对象

阅读更多

为了编写能兼容各种浏览器的 javascript ,我们可能首先想的是用js检测各种浏览器的版本,针对性地编写不同的js代码.

 

这种思想是不好的, 是不通用的.

 

正如本文本的题 : 不要检测版本,要检测对象

 

例子:

早期的Netscape 4和 IE 3  是不支持 document.body的  , 所在我们要在我们的js中针对 这两浏览器 避免使用document.body  ,怎么做呢? 很多人一下子想到了, 检测浏览器的版本.  这样做不是最好的.

 

我们要检测浏览器 是否支持 某对象 , 而不是检测版本.

 

if(document.body&&document.body.getElementsByTagName)

{

//可以调用 document.body

//可以调用 document.body.getElementsByTagName

 

}

 

 

假使if()条件不满足, 我们的页面中会少一些闪光点罢了, 但程序是不会出错的,还能正常运行.

 

下面是一个取得事件对象的例子:

 其中的window.event 就是检测对象

// 获得事件对象
function $EVENTObject()
{
 if(window.event)
 { 
  return window.event;
 }
    var f=$EVENTObject.caller;
    while(f!=null)
    {
        var e = f.arguments[0]; 
  alert(e);
        if(e && (e.constructor==MouseEvent||e.constructor==Event||e.constructor==KeyboardEvent)) return e;                 
        f=f.caller;
    }
}  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics