【发布时间】:2011-01-02 15:13:03
【问题描述】:
如果是 Web 应用程序,您如何判断访问者正在通过手机查看?
是否也可以像黑莓和 iPhone 一样找出品牌/型号?
【问题讨论】:
如果是 Web 应用程序,您如何判断访问者正在通过手机查看?
是否也可以像黑莓和 iPhone 一样找出品牌/型号?
【问题讨论】:
您可以查看他们的User-Agent 字符串。
【讨论】:
Scott Hanselman did a podcast 在 Microsoft made available on Codeplex 的模块设备数据库上。它是您放入 ASP.NET(2.0+ 版)网站的 .browser 文件,它可以帮助框架更紧密地定义 Request.Browser 属性。您应该能够从那里获得很多您需要的信息。
但是,该项目不再受支持,当您处理用户代理检测时,拥有最新的资源非常重要。您可能应该使用类似的项目,例如 51degrees.mobi 或 WURFL。
即使没有,至少你可以检查Request.Browser.IsMobileDevice。
【讨论】:
您可以检查用户代理字符串。在 JavaScript 中,这真的很简单,它只是导航器对象的一个属性。
var useragent = navigator.userAgent;
您可以在 JS 中检查设备是否为 iPhone 或 Blackberry 之类的
var isIphone = !!agent.match(/iPhone/i),
isBlackberry = !!agent.match(/blackberry/i);
如果 isIphone 为 true,则您正在从 Iphone 访问该站点,如果 isBlackBerry 您正在从 Blackberry 访问该站点。
您可以使用 firefox 的“UserAgent Switcher”插件来测试。
【讨论】:
在Session_Start 中使用httpRequest.Browser.IsMobileDevice
void Session_Start(object sender, EventArgs e)
{
// Redirect mobile users to the mobile home page
HttpRequest httpRequest = HttpContext.Current.Request;
if (httpRequest.Browser.IsMobileDevice)
{
string path = httpRequest.Url.PathAndQuery;
bool isOnMobilePage = path.StartsWith("/Mobile/",
StringComparison.OrdinalIgnoreCase);
if (!isOnMobilePage)
{
string redirectTo = "~/Mobile/";
HttpContext.Current.Response.Redirect(redirectTo);
}
}
}
【讨论】:
请检查一下。对我来说工作得很好!
【讨论】:
【讨论】:
以下是来自类似问题的一些信息:
Auto detect mobile browser (via user-agent?)
它涉及读取用户代理标头。其他问题的答案包括此脚本的链接。
这是另一个有用的讨论:
Standard way to detect mobile browsers in a web application based on the http request
【讨论】:
如前所述 - 用户代理
但是,你真的是要问“是手机吗”?还是你真的是别的意思?
如今,界限越来越模糊。我花了 99 美元从 eBay 买了一个漂亮的 7 英寸屏幕 Android 平板电脑。那是手机吗?是 6 英寸屏幕的迷你上网本吗?是类似于 Kidnle 的设备吗?
我只是想知道您为什么想知道它是否是手机……屏幕尺寸?处理能力?别的东西?
您可能确实是指手机,但如果不是,请改写,我们可以提供进一步帮助。
【讨论】: