JavaScript之检测篇:浏览器能力/设备类型/API
#1 检查浏览器种类及其版本号
//检查浏览器种类及其版本号
function checkBrowserVersion(){
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
//以下进行测试
if (Sys.ie) return {"browser":"IE","version":Sys.ie};
if (Sys.firefox) return {"browser":"Firefox","version":Sys.firefox};
if (Sys.chrome) return {"browser":"Chrome","version":Sys.chrome};
if (Sys.opera) return {"browser":"Opera","version":Sys.opera};
if (Sys.safari) return {"browser":"Safari","version":Sys.safari};
}
// test
checkBrowserVersion();
// {browser: "Chrome", version: "61.0.3163.100"}
#2 判断当前浏览器所在设备是否为PC电脑?
function isPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ['Android', 'iPhone',
'SymbianOS', 'Windows Phone',
'iPad', 'iPod'
];
var flag = true;
for (var i = 0; i < Agents.length; i++) {
if (userAgentInfo.indexOf(Agents[i]) != -1) {
flag = false;
break;
}
}
return flag;
}
#3 判断是否支持标签的某属性
var isSupportProperty_required_of_InputElement = 'required' in document.createElement('input');
#4 判断是否支持JS的API(函数/对象/字符串/数值/...)
/**
isSupportedJSAPI({api:"document", isStringOfFirstArg:true}); // object
isSupportedJSAPI({api:"document", isStringOfFirstArg:false}); // string [不推荐]
isSupportedJSAPI({api: document, isStringOfFirstArg:true}); // object [不推荐]
isSupportedJSAPI({api: document, isStringOfFirstArg:false}); // object
isSupportedJSAPI({api:"document.selection", isStringOfFirstArg:true}); //document.selection 's type is undefined / false
isSupportedJSAPI({api:"document.getSelection", isStringOfFirstArg:true});//document.getSelection 's type is function / true
isSupportedJSAPI({api:"myFunc", isStringOfFirstArg:true});// function
isSupportedJSAPI({api:"myFunc", isStringOfFirstArg:false}); // string [不推荐]
isSupportedJSAPI({api: myFunc, isStringOfFirstArg:true}); // function [不推荐]
isSupportedJSAPI({api: myFunc, isStringOfFirstArg:false}); // function
*/
function isSupportedJSAPI({api, isStringOfFirstArg}){//是否是被支持的JSAPI
var typeResult = null;
try {
if(isStringOfFirstArg == true){
typeResult = typeof eval(api); // typeof eval("document") === "object" 与 typeof eval(document) === "object" 等效
} else {
typeResult = typeof api;
}
console.log(api, '\'s type is ', typeResult);
if(typeResult === 'undefined'){//未初始化的变量 也是 undefined
return {type: typeResult, suported: false };
} else { // function / object / string / boolean / number 【注】 null 系 object 类型
return {type: typeResult, suported: true };
}
} catch(error) {
console.log("throw a exception!");
console.log(error.message);
}
}
#X 参考文献
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号