[这是另一种变体或同化供您考虑。]
它更加通用和进一步简化。
您可以传递请求或任何具有“标头”属性的对象,也可以是标头属性,您可以选择任何标签来搜索对象或标头或实际用户代理字符串本身的参数。
它使用了之前发布的 Mobile and Table Checking Regex,并简单地返回该结果,但是通过首先圣化输入,人们可以插入各种东西。
您甚至可以覆盖默认的正则表达式,可选择作为参数传递。 {我会把进一步的扩展留给受启发的人。}
如果在范围内等,也可以有另一种方法从请求中默认为全局存储的用户代理。
mobTabCheck: function( ua, lbl, rgx ) { /* mobile tablet check; UserAgent or request, or any object with optional search label */
if( ua === und ) return false;
if( ua !== und && ua.constructor !== String ) {
if( lbl === und ) lbl = 'user-agent';
if( ua.headers !== und ) ua = ua.headers[ lbl ];
else ua = ua[ lbl ];
}
if( rgx === und ) rgx = /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/;
if( rgx.constructor === String ) rgx = new RegExp( rgx );
return rgx.test( ua );
}
这个正则表达式来自这里...
https://gist.github.com/dalethedeveloper/1503252/931cc8b613aaa930ef92a4027916e6687d07feac
98% 的解决方案。我不知道它是否像我的函数标题所暗示的那样检查平板电脑。
这个函数的标题(和一些参数)真的应该重命名吗?... serachObjectForLabelThatMatchesThisRegex
除了所有的默认设置使它成为一个单一的参数目的的东西。
此外,我将函数集保留为键的值,您可以按照自己的喜好存储它...只要向我保证,如果您使用它,不要使用 var 或 const。
let mobTabCheck = function() {};