我正在尝试隐藏平板电脑和平板电脑智能手机,但仍希望在混合设备上显示,例如Microsoft Surface Pro。
基础4提供touch detection classes,但我不确定它是否会隐藏或显示在混合设备上。
有没有人有过这方面的经验?我该如何控制它?
/* The touch detection classes */
.show-for-touch /* Visible for touch enabled devices */
.hide-for-touch /* Hidden for touch enabled devices */
答案 0 :(得分:1)
Foundation 4使用Modernizr检测浏览器中对Touch Events API的支持,而不是触摸设备。
我认为你对这个问题最好的“修复”是嗅探用户代理,看它是否与相关的代理匹配
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)
取自User-agent string。
为了使其面向未来,可能只需查看用户代理字符串是否以Touch
结尾并包含Windows
。
如果你检测到这样的用户代理,那么让Modernizr执行替代代码(你决定做什么)。
我看到当前的Foundation 4版本使用自定义的Modernizr构建,即Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load
。
为了为Modernizr编写自定义测试,您需要Modernizr.addTest
,这是基础4中包含的默认构建中缺少的。您需要进行自定义构建,我已经准备好了对于你,它还应该包含当前Foundation Modernizr自定义构建包含Custom Modernizr Build with addtest
以下是您的自定义用户代理测试的示例Modernizr测试的样子。
Modernizr.addTest('winsurface', function () {
return !!navigator.userAgent.match(/put your regex here/g);
});
然后,如果你想做一些测试是积极的事情,你会这样做:
if (Modernizr.winsurface) {
...put your js code here
}