zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

客户端检测

客户端 检测
2023-09-11 14:19:41 时间

前端开发中,在呈现引擎、浏览器、平台、操作系统、引动设备、游戏系统存在差异的情况下,我们的代码会出现很多不兼容问题。

而,客户端检测,就是分辨上述6个种类的方法,进而可以使我们针对不同的情况运行不同的代码。但是客户端检测是非常麻烦的,这绝不是第一个考虑的方式。

具体的客户端检测,可以在JavaScript高级编程设计的  客户端检测 这一章得到认真的解析,包括方法。也可以在网上搜索。不过多介绍。

我们平时开发中,为了写出兼容的代码,客户端检测用的绝对不是最多的,它经常是排到最后一位来使用,也就是彻底没办法的时候才用。

下面来说一下,其它的优先级比较高的检测方式。

1、能力检测:

我们可以判断一个方法是否能用,或者一个方法是否存在,然后再使用这些方法,这样就不会出现错误。也就是先检测有没有这项能力。

2、怪癖检测:它的目标是 识别浏览器的特殊行为,如IE8更早版本,存在一个bug,某个实例属性与[[Enumerable]]标记为false的某个原型属性同名,那么该实例属性将不会出现在for-in循环中。可以yoga如下代码来检测;

    var hasDontEnumQuirk = function(){
        var o = { toString:function(){} };
        for ( var prop in o){
            if(prop == "toString"){
                return false;
            }
        }
        return true;
    }();
    //此代码 就可以检测 存不存在这种怪癖

从而可以针对这种情况写一些兼容代码;

而在前两种方法都解决不了兼容性的情况下,我们才采用  客户端检测  ,

确定是什么引擎(opera、webkit、KHTML、Gecko、IE);

确定是什么浏览器:chrome、opera、konq、safari、firefox、IE;

确定是什么平台:win(windows)、mac、xll(Unix);

确定是什么操作windows系统:"2000"、"XP"、"Vista"、"7"、"NT"、"ME"、RegExp["$1"];

确定是什么移动设备:iphone、ipod、ios、android、nokiaN、winMobile;

确定是什么游戏系统:wii、ps

当我们检测出这些信息后,就可以根据不同情况写兼容代码了,不过这种方法,不到万不得已,不推荐使用。