如果你去 https://oorkle.com/browse从桌面浏览器查看左侧,您会看到一个使用 Bootstrap 下拉菜单的过滤器/侧边栏,您会看到它们可以正常工作(它们会下拉):
如果你足够缩小 View ,一些 jQuery 会将这些下拉菜单移动到二级顶部导航栏中,但它们仍然可以工作(它们会下拉):
现在,如果您在从 Android 或 iOS(iPhone 或 iPad)加载页面时尝试这些相同的操作,您会发现下拉菜单不再起作用:
如果你 diff the HTML of the desktop version and the HTML of the Android/iOS version ,您只会看到细微的 CSS 差异:
如果你 diff the live HTML (with modifications from JavaScript) ,与上面的差异唯一真正的区别是每个选择器都添加了一个 mobile
类:
Responsive
选项,该选项使用 Android User-Agent 字符串,下拉菜单将不起作用,无论页面加载时有多宽。mobile
类,但这似乎没有任何效果(下拉菜单仍然没有出现)。bootstrap.js
文件替换 v3.0.3 bootstrap.js
文件它仍然不起作用,但我不确定它是否CSS 类可能会发生变化,或者 CSS 类可能会发生变化。在我看来,Bootstrap 正在以某种方式使用用户代理字符串,这导致下拉菜单不起作用。
It is likely that your library (or your code) handles the first click by simulating a second click programmatically on the HTML select when the user clicks on the outer element.
A programmatic/scripted mouseevent is considered "non-trusted" and the default event will not be handled. Aka, the select will not be expanded and the user must click again.
If you are using a library that provides an entire widget (some element + an HTML select), try updating your library to the latest version to see if they are taking another approach (besides programmatically sending a mouseevent to the HTML select).
问题似乎是使用 FormStone Selecter plugin 进行选择的结果(v2.2.3),它大概使用 jQuery 来处理点击,it seems Android now treats as a security threat and does not allow .
为了解决这个问题,我让我的 Web.py(Python Web 框架)模板文件查看用户代理字符串,如果出现“android”,它会将 selects 的类设置为“form-control”(一个 Bootstrap class),从而让 Bootstrap 为选择设置样式,如果用户代理字符串中的“android”not,它将照常使用 FormStone Selecter 插件。
所以,澄清一下:尽管我认为选择使用 Bootstrap 并且 Bootstrap 不起作用,但事实证明选择没有使用 Bootstrap,并且 Bootstrap v3.0.3 选择了 < em>确实在 Android 上工作。
关于android - Bootstrap 下拉菜单在 Android 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52799817/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |