在浏览器中检测Windows Phone 8

3
这个链接声称Windows Phone 8设备将获得一个独特的用户代理字符串,其中同时指定了“Windows Phone 8”和“MSIE 10.0”。然而,在我测试的两个生产WP8设备(诺基亚Lumia 920和HTC 8x)中,两者都继续报告IE 9和Windows Phone OS 7.5。
有人知道发生了什么吗?
编辑:一位朋友提出这可能与html页面上的不正确的文档类型有关,但对我来说这没有意义,因为我在ASP.net MVC站点中的OnActionExecuting事件中检测到了该用户代理(此时我尚未向用户返回文档类型)。
编辑2:这个网站将在Xaml应用程序中的WebBrowser控件中运行,而不是在本地浏览器中运行,这是否会有任何影响。

1
用户代理嗅探几乎总是错误的方法。搜索“响应式设计”。 - Rimu Atkinson
正如@RimuAtkinson所指出的那样,你正在问错问题。不要“检测浏览器”,而是使用响应式技术和特性检测来提供可以适应几乎任何正在使用的浏览器的页面。 - Sampson
5
我正在针对我的情况提出确切的问题,但我理解并感激您的关心。 - terphi
4
在Stack Overflow上对于"User Agent detection"问题的那些膝跳式反应真是让人很烦恼。如果你试图支持或适应某些功能,或者检测缺少的功能,那么UA检测确实是错误的方法。然而,有几种情况是合法的,你需要提供严格基于操作系统的上下文信息或操作,在这些情况下,特性检测将是一个令人沮丧的迂回方式。在这些情况下,UA检测是确定用户是否在某个特定的操作系统上的最佳方式。 - ORyan
3个回答

2

我的代码运行在WP7 XAML应用程序和WebBrowser控件中。如果你想在应用程序中获得更新的浏览器,你必须升级你的应用程序到WP8。


1
我无法解决你的问题。 我的htc 8x的UA是: Mozilla/5.0(兼容;MSIE 10.0;Windows Phone 8.0;Trident/6.0;IEMobile/10.0;ARM;触摸;HTC;Windows Phone 8X by HTC)
这个网站可以检测您的用户代理。 http://whatsmyuseragent.com/

0
function isIEMobile() {
    var regExp = new RegExp("IEMobile", "i");
    return navigator.userAgent.match(regExp);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接