• 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;
    }();

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

  • 相关阅读:
    Linux脚本中使用特定JDK
    redis 模糊匹配批量清理 keys
    git push 本地项目推送到远程分支
    extentreports报告插件之extentX之服务搭建(三)
    extentreports报告插件与testng集成(二)
    extentreports报告插件与testng集成(一)
    初识ios自动化(一)
    css 选择器
    appium移动端测试之滑动(二)
    使用appium进行ios测试,启动inspector时遇到的问题(一)
  • 原文地址:https://www.cnblogs.com/sundjly/p/7899037.html
Copyright © 2020-2023  润新知