• 客户端检测


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

    而,客户端检测,就是分辨上述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

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

  • 相关阅读:
    STL::next_permutation();
    P2626 斐波那契数列(升级版)
    P1029 最大公约数和最小公倍数问题
    P1075 质因数分解
    4.7生日当天测
    cin,scanf,gets,getline,cin.getline对于字符串的输入
    两个互质的数不能凑出来的数证明
    简单的全排列问题(给初学者)
    紫书 例题 10-22 UVa 1640(数位统计)
    紫书 例题 10-21 UVa 11971(连续概率)
  • 原文地址:https://www.cnblogs.com/fqh123/p/10421398.html
Copyright © 2020-2023  润新知