我有一个键值对数组,其中包含在用户代理字符串中找到的关键字。我需要遍历这些对并将每个值匹配到 navigator.userAgent 字符串。我知道浏览器嗅探是不受欢迎的,但这不取决于我。我可以使用 for 循环代替 Ext.each(我不太熟悉)。这是我第一次解决这个问题的 jsfiddle http://jsfiddle.net/tagZN/83/但我被告知要以其他方式代替。
<script type="text/javascript">
var deviceProfiles =
[
'{match:Macintosh, name:Mac Desktop}',
'{match:Windows NT, name:Windows Desktop}',
'{match:Ubuntu, name:Ubuntu,layout:desktop}',
'{match:Silk, name:Kindle Fire,layout:tablet}'
];
var ua = navigator.userAgent;
var re = new RegExp(deviceProfiles.join("|"), "i");
var identifyDevice = function( ua )
{
Ext.each(
deviceProfiles,
function( profile )
{
return ua.match( profile.match ) == nil;
}
);
}
</script>
我最初也被赋予 deviceProfile 为(并被告知填写匹配和名称的值):
var deviceProfiles =
[
{
match: 'user agent regular expression here',
name: 'name of device here',
},
{
match: 'user agent regular expression here',
name: 'name of device here'
},
{
match: 'user agent regular expression here',
name: 'name of device here',
}
];
但它没有用,所以我把它改成了你在上面看到的。这是一个糟糕的电话。我试图破译我得到了什么。我也创造了
var re = new RegExp(deviceProfiles.join("|"), "i");
即使它还没有被使用,我相信它是必要的。我已经通过将 ua 设置为等于我复制并粘贴到关键字包含在数组 deviceProfiles 中的实际用户代理字符串来对此进行了测试,但仍然没有运气。
任何帮助都非常感谢。