我使用Scott的MobileViewEngines 请在此描述和51Degrees.mobi浏览器数据库为移动浏览器和桌面浏览器提供不同的视图。
我现在想补充一个中间立场。适用于高端移动浏览器(苹果、安卓、windows手机、黑莓等)。我正在考虑使用触摸屏来区分这个类别。
因此,有两个问题:
发布于 2011-12-22 11:22:52
我在51Degrees.mobi工作。您可以使用Request.Browser["IsTouchScreen"]检测设备是否为触摸屏。
然而,在MVC中优雅地使用这一点需要更多的关注。从MobileCapableViewEngine的来源来看,似乎可以通过复制移动引擎和更改FindView方法来创建一个新引擎:
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName,
string masterName, bool useCache)
{
string overrideViewName = controllerContext.HttpContext.Request.Browser["IsTouchScreen"] == "True"
? viewName + ".Touch"
: viewName;
ViewEngineResult result = NewFindView(controllerContext, overrideViewName, masterName, useCache);
// If we're looking for a Touch view and couldn't find it try again without modifying the viewname
if (overrideViewName.Contains(".Touch") && (result == null || result.View == null))
{
result = NewFindView(controllerContext, viewName, masterName, useCache);
}
return result;
}这个新的引擎将需要添加到移动引擎,启动,机顶盒和创建触摸视图。
但是,在进行此操作之前,您应该考虑一下这是否是您想要分离设备的方式。例如,NokiaX3-02有一个相对较小的屏幕,但显示的视图与iPad类似。也许你应该考虑使用设备的操作系统( Request.Browser["PlatformName"] )
最后,51Degrees.mobi基金会版本2介绍了我们自己的设备数据,这些数据使用了与前一个版本不同的功能名称。你可以在51Degrees.mobi上读到mroe。
发布于 2011-12-22 09:09:31
大多数触摸检测都是用Javascript完成的。或者是CSS。
现代派是一个很好的使用库,我认为它默认是与MVC3一起提供的。
你会是这样的:
html.touch div {
width: 480px;
}
html.no-touch div {
width: auto;
}有关检测示例,请参见这
也许你也可以看看MVC4?他们的主要观点之一是更好的移动支持。在这里读。在默认情况下,这可能为良好的触觉检测添加了一些内容。
https://stackoverflow.com/questions/8601129
复制相似问题