我正在研究如何使用Windows 8和其他设备区分平板电脑。根据这篇文档http://msdn.microsoft.com/en-us/library/ie/hh869301%28v=vs.85%29.aspx,应该有" Touch"带有Windows的平板电脑中的UserAgent中的令牌。
但我担心,带触摸屏的笔记本电脑在UserAgent中也会有这个令牌。不幸的是,我自己没有这样的设备和测试。
有人可以确认这个"触摸"令牌只在Internet Explorer中用于平板电脑和手机吗?
答案 0 :(得分:3)
好的,所以我认为你在这里创建了一些转移,你不是想要检测触摸本身就像你想要检测设备是平板电脑还是台式机一样多。正如我之前在评论中所述,您不应该使用任何用户代理字符串来进行特征检测。直接检测功能。
FWIW是我在DeepTissue中检测触摸支持的方式:
this.touchType = window.navigator.pointerEnabled ? "pointer" :
"ontouchstart" in window ? "touch" : "mouse";
请注意我如何首先检测指针事件然后回退到其他输入模态API?
关于我认为问题的本质是什么,我如何设计针对传统桌面和现代触控设备进行优化的界面?在这里,您需要挖掘您心中的艺术部分,并将其与Jacob Nielson等人的有价值的用户体验研究融合在一起,了解哪些有效,哪些无效。正如你所看到的那样,微软,谷歌和苹果都在努力解决这个问题并不容易回答。基于丰富的经验,我的建议是创建一个简单,响应迅速的用户界面并从中发展。首先启动移动设备并从那里进行设计。请记住,如果它适用于胖手指,那么它将使用鼠标指针。 Touch是一种直接输入模式,其中鼠标是间接的,所以体验略有不同。
让所有数据都可操作。这意味着不是使用围绕文本的锚点的小触摸目标使锚点环绕产品照片。确保锚点内有足够的填充,以使触摸目标更容易被击中,并确保相邻目标之间有边距以减少错误。
这对于精确科学来说并不是一个容易回答的问题,因为每个应用程序都有自己的特点或个性。用户各不相同等等。但有一点是肯定触摸正在迅速取代非触摸设备,您需要在任何应用程序设计中考虑到这一点。
答案 1 :(得分:1)
您不能保证任何令牌,更不用说touch
令牌,只能用于Windows平板电脑或手机。期。例如,UA字符串可以由第三方控件,组策略甚至最终用户修改。它充其量是不可预测的。
我知道没有标准规范(规范地)用户代理字符串的内容。各种浏览器和用户代理已经为了自己的目的复制了其他用户代理字符串的元素,以确保其用户代理接收内容。实际上,IE团队已经记录在案,因为Windows 10的用户代理字符串设计为ensure the delivery of content,而不是浏览器的标识。
正因为如此,对用户代理字符串的依赖不再被视为" good"练习,更不用说最好的了。这只是微软内容自IE9发布以来一直倡导功能检测和其他实践的原因之一。 (其他资源已经将用户代理字符串弃用了更长时间。)
您还没有说明为什么您需要将一个制造商的平板电脑和手机与另一个平板电脑和手机区分开来,或者您希望提供哪些类似差异化设备的更改。因此,推荐更有效的方法很困难(如果不是不可能的话)。
如果您尝试创建仅适用于这些设备的应用程序,则可能不会使用Web平台。如果您希望提供特定于这些设备的内容或功能,则Windows应用商店平台(或.NET框架)可能更合适。如果您正在寻找从您的产品中排除这些设备的方法,那么您可能希望考虑使用Android或iOS特定平台。
Web平台部分意味着与设备无关,可在各种设备,外形和操作系统中实现一致且可预测的功能集。
希望这会有所帮助......
- Lance
答案 2 :(得分:0)
var isTouch = 'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
navigator.msMaxTouchPoints > 0;