zoukankan      html  css  js  c++  java
  • js客户端检测

    1.能力检测的基本模式如下:

    //能力检测的基本模式
    if (object.propertyInQuestion) {
    // 使用object.propertyInQuestion
    }
    
    throw new Error("No way to retrieve element")
    
    // 如检查sort是不是函数(存在)
    fucntion isSortable(object) {
    return typeof object.sort == "function";
    }

    在可能情况下,尽量使用typeof 进行能力检测

    // 检测所有浏览器的Flash
    function hasFlash() {
    var result = hasPlugin('Flash');
    if (!result) {
    result = hasIEPlugin('ShockwaveFlash.ShockwaveFlash');
    }
    return result;
    }
    
    // 检测Flash
    // alert(hasFlash());

    对于方法检测

    // 如检查sort是不是函数(存在)
    function isSortable(object) {
    return typeof object.sort == "function";
    }
    
    // 在浏览器环境下测试任何对象的某个特性是否存在
    /**
    * author:Peter Michaux
    */
    function isHostMethod(object, property) {
    var t = typeof object[property];
    return t == "function" || (!!(t == 'object' && object[property])) || t == "unknown";
    }
    
     
    
    //确定浏览器是否支持Netscape风格的插件
    var hasNSplugins = !!(navigator.plugins && navigator.plugins.length);
    
    // 确定浏览器是否具有DOM1级规定的能力
    var hasDOM1 = !!(document.getElementById && document.createElement && docuemnt.getElementByTagName);
    
    
    // 怪癖检测
    var hasDontEnumQuick = function() {
    var o = { toString: function() {} };
    for (var prop in o) {
    if (prop == "toString") {
    return false;
    }
    }
    return true;
    }();

    用户代理检测是客户端检测的最后一个选择,优先使用能力检测和怪癖检测

  • 相关阅读:
    iOS图片拉伸技巧
    Swift和OC混合使用
    【转】动态计算UITableViewCell高度详解
    AutoLayout~Label
    【转】初探 iOS8 中的 Size Class
    Objective-C runtime~
    [转]Objective-C中的类和对象(instance)
    Masonry~
    [转] ios学习--openURL的使用方法
    Autolayout~代码实现
  • 原文地址:https://www.cnblogs.com/sundjly/p/7899037.html
Copyright © 2011-2022 走看看