Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有触摸屏用户代理的笔记本电脑_Javascript_Internet Explorer_Windows 8_User Agent - Fatal编程技术网

Javascript 带有触摸屏用户代理的笔记本电脑

Javascript 带有触摸屏用户代理的笔记本电脑,javascript,internet-explorer,windows-8,user-agent,Javascript,Internet Explorer,Windows 8,User Agent,我正在研究如何将平板电脑与Windows 8和其他设备区分开来。根据此文档,在Windows平板电脑的UserAgent中应该有“触摸”令牌 但我担心的是,带有触摸屏的笔记本电脑是否也会在UserAgent中包含此令牌。不幸的是,我自己没有这样的设备和测试 有人能确认这个“触摸”令牌只在Internet Explorer中用于平板电脑和手机吗?Mozilla说。。。伊什。 Mozilla说。。。伊什。 您不能保证任何令牌(更不用说touch令牌)仅用于Windows平板电脑或手机。时期例如,UA

我正在研究如何将平板电脑与Windows 8和其他设备区分开来。根据此文档,在Windows平板电脑的UserAgent中应该有“触摸”令牌

但我担心的是,带有触摸屏的笔记本电脑是否也会在UserAgent中包含此令牌。不幸的是,我自己没有这样的设备和测试

有人能确认这个“触摸”令牌只在Internet Explorer中用于平板电脑和手机吗?

Mozilla说。。。伊什。 Mozilla说。。。伊什。
您不能保证任何令牌(更不用说
touch
令牌)仅用于Windows平板电脑或手机。时期例如,UA字符串可以由第三方控件、组策略甚至最终用户修改。这充其量是不可预测的

据我所知,没有任何标准(规范地)规定用户代理字符串的内容。各种浏览器和用户代理出于各自的目的复制了其他用户代理字符串的元素,以确保其用户代理接收内容。事实上,IE团队已经公开表示,Windows10的用户代理字符串设计用于识别浏览器,而不是识别浏览器

因此,依赖用户代理字符串不再被视为“好”实践,更不用说最佳实践了。这只是自IE9发布以来,微软内容一直倡导功能检测和其他实践的原因之一。(其他资源不再使用用户代理字符串的时间要长得多。)

您还没有说明为什么需要将一家制造商的平板电脑和手机与另一家制造商的平板电脑和手机区分开来,或者您希望通过哪些改变来提供这种差异化的设备。因此,很难(如果不是不可能的话)推荐一种更有效的方法

如果您试图创建一个只在这些设备上运行的应用程序,那么web平台可能不是要使用的平台。如果您希望提供特定于这些设备的内容或功能,Windows应用商店平台(或.NET framework)可能更合适。如果您正在寻找一种方法来排除这些设备从您的产品,那么您可能希望考虑Android或特定于iOS的平台。 web平台在某种程度上意味着不依赖于设备,能够在一系列设备、外形和操作系统中实现一致的、可预测的功能集

希望这有助于


--Lance

您不能保证任何令牌(更不用说
touch
令牌)仅用于Windows平板电脑或手机。时期例如,UA字符串可以由第三方控件、组策略甚至最终用户修改。这充其量是不可预测的

据我所知,没有任何标准(规范地)规定用户代理字符串的内容。各种浏览器和用户代理出于各自的目的复制了其他用户代理字符串的元素,以确保其用户代理接收内容。事实上,IE团队已经公开表示,Windows10的用户代理字符串设计用于识别浏览器,而不是识别浏览器

因此,依赖用户代理字符串不再被视为“好”实践,更不用说最佳实践了。这只是自IE9发布以来,微软内容一直倡导功能检测和其他实践的原因之一。(其他资源不再使用用户代理字符串的时间要长得多。)

您还没有说明为什么需要将一家制造商的平板电脑和手机与另一家制造商的平板电脑和手机区分开来,或者您希望通过哪些改变来提供这种差异化的设备。因此,很难(如果不是不可能的话)推荐一种更有效的方法

如果您试图创建一个只在这些设备上运行的应用程序,那么web平台可能不是要使用的平台。如果您希望提供特定于这些设备的内容或功能,Windows应用商店平台(或.NET framework)可能更合适。如果您正在寻找一种方法来排除这些设备从您的产品,那么您可能希望考虑Android或特定于iOS的平台。 web平台在某种程度上意味着不依赖于设备,能够在一系列设备、外形和操作系统中实现一致的、可预测的功能集

希望这有助于


--Lance

好吧,我想你在这里为一些人制造了一个转移,你并没有像你想检测一台设备是平板电脑还是台式机那样试图检测触摸本身。正如我在前面的评论中所说,您永远不应该使用任何用户代理字符串来进行功能检测。直接检测特征

FWIW以下是我如何在中检测触摸支持:

注意我是如何首先检测指针事件,然后返回到其他输入模态API的

关于我认为你问题的实质是什么,我如何设计一个为传统台式机和现代触摸设备优化的界面?在这里,你需要挖掘你头脑中的艺术部分,并将其与雅各布·尼尔森(Jacob Nielson)等人关于什么有效,什么无效的有价值的用户体验研究相结合。正如你所看到的,微软、谷歌和苹果都在为同一个问题苦苦挣扎,这不容易回答。基于大量经验,我的建议是创建一个简单、响应迅速的UI,并从中成长。首先启动mobile,然后从那里开始设计。请记住,如果它适用于胖手指,那么它将适用于鼠标指针。触摸是一种直接输入方式,其中鼠标处于间接模式,因此体验略有不同

使您的所有数据都可操作。这意味着不要使用锚定环绕文本的小触摸目标,而要使锚定环绕产品照片。确保锚内有足够的填充物,以使触摸目标更容易击中,并确保相邻目标之间有余量,以减少错误

T
var isTouch = 'ontouchstart' in window || 
          navigator.maxTouchPoints > 0 ||
          navigator.msMaxTouchPoints > 0;
            this.touchType = window.navigator.pointerEnabled ? "pointer" :
                            "ontouchstart" in window ? "touch" : "mouse";