某些Chrome用户无法打开数据悬停菜单

时间:2017-01-20 13:58:00

标签: twitter-bootstrap google-chrome drop-down-menu

我有data-hover="dropdown"的下拉菜单。我一直在收到一些用户的报告,说明他们没有显示下拉菜单。最合作的用户表示它发生在Chrome 55.0.2883.87m(在Windows 10 14393.576上),并且在其他浏览器上不会发生。我有完全相同的Chrome和Windows,菜单显示正常。

我的网站:tipulnagish.co.il - 从主菜单打开下拉列表。

该网站使用Bootstrap v3.2.0,菜单基本上是:

<ul id="menu-main" class="nav navbar-nav">
  <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown">
    <a href="#" class="dropdown-toggle" data-hover="dropdown" data-delay="500" data-close-others="false"><span>חיפוש מטפל/ת לפי מקצוע</span></a>
    <ul class="dropdown-menu">
        <li class="menu-item menu-item-type-custom menu-item-object-custom"><a href="/listing-category/פסיכולוגי"><span>טיפול פסיכולוגי / פסיכותרפיה</span></a></li>
(etc.)

可能是什么原因?
我或许可以让TeamViewer访问用户的机器。我该怎么检查呢?

更新

  • 也发生在我的笔记本电脑上,它有触摸屏,看起来很相关。
  • This demo有同样的问题。 Chromium issue 409383的解决方案表明这是因为该网站基于navigator.maxTouchPoints进行了特殊处理 - 我在整个网站中都没有找到任何此类引用。

1 个答案:

答案 0 :(得分:1)

结果data-hover="dropdown"触发插件bootstrap-hover-dropdown,其中包含禁用启用触摸的设备上的悬停的代码:

$.fn.dropdownHover = function (options) {
    // don't do anything if touch is supported
    // (plugin causes some issues on mobile)
    if ('ontouchstart' in document) return this; // don't want to affect chaining

The plugin's issue #68详细讨论了这一点,没有任何好的解决方案。作为一种解决方法,我将data-toggle="dropdown"添加到我的标记中,因此触摸用户可以通过单击/触摸打开菜单。这有一些怪癖,但与非触摸用户看到的悬停行为相当合理。

我是如何发现这个

使用Visual Event Chrome extension,我看到菜单栏已绑定事件mouseover/mouseout,受影响的(触摸)计算机没有。这些事件已注册bootstrap-hover-dropdown.js,就在此之前,上述代码会禁用在触摸设备上悬停。