2012-12-11 52 views
15

我想检查浏览器是否会显示一个特殊的“原生”风格下拉列表(如iPhone和iPod),而无需专门检查浏览器名称。是否有可能以更通用的方式检查该功能,而无需通过名称查看用户代理?如何检测手机浏览器是否会显示“本地”下拉控件?

我想这样做来确定是否渲染标准或更多增强的下拉控件。

+0

您是指移动浏览器呈现HTML选择输入的方式吗?你在这里定义的“特殊”是什么? –

+0

啊,是的。像iPhone一样选择输入控件。基本上想知道是否有一种方法可以检测浏览器是否显示内联选择并弹出自己的特殊控件。谢谢。 – Jason

+0

您是否找到解决方案?也许通过看'window.orientation'?也许现在所有的移动设备都显示出一个很好的和可用的本地选择(多个或不是)控制? – cherouvim

回答

0

当我读到这个问题,我得到了一个肮脏的解决方案的想法。只是一个猜测,但也许它有帮助:

将您的本地元素放入HTML并尝试使用elementFromPoint函数在JavaScript中获取它。 (MDN link

如果您没有得到元素或返回的元素不是您的本地元素,那么您知道它不会显示。

3

我不相信这实际上可能没有一个非常糟糕的解决方案。我敢打赌,最好的方法是检测设备,因为几乎所有的移动浏览器都使用本地ddl来显示选项。

if (Modernizr.touch && Modernizr.mq('only screen and (max-width: 768px)') { 
    //it is a mobile/tablet device 
} 

或使用常规的CSS媒体查询:

这可以通过使用Modernizr的媒体查询和触摸检测来实现。

1

我目前正在检查是否存在window.orientation,它似乎是做Android和iOS的工作。

+0

快速和肮脏,但它没有如果你不想添加对Modernizr的依赖性,那么这项工作就可以完成 – baxeico

2

我是一个90%肯定这个答案:第

您正在寻找来检测,如果你是一个浏览器,看起来weird,但你主观定义weird。用户Reda的回答是正确的,但它违反了你的部分问题(不是通过名称来标识浏览器)。我的观点是,你需要通过名称来识别浏览器,因为你的限定符是主观的,所以你不会找到它的JS/CSS测试。

浏览器完全控制它们显示的下拉列表。大多数与它们在这些下拉组件上的CSS实现不一致。没有标准规定浏览器需要公开有关应用程序级别下拉列表的任何信息。

为了影响你想要的,你需要找到你不喜欢的下拉控件的浏览器,并将它们列出来,并通过Modernizr或其他类似的技巧来对其进行定位。不幸的是,这违反了你的问题的意图,所以我认为你的实际问题的答案是......不,对不起。

相关问题