滚动 HTML <select> 列表时 iPad 未检测到触摸

Posted

技术标签:

【中文标题】滚动 HTML <select> 列表时 iPad 未检测到触摸【英文标题】:iPad not detecting touch while scrolling through HTML <select> list 【发布时间】:2014-05-15 14:39:27 【问题描述】:

在页面加载时,计时器会启动,但每次发生触摸事件时都会重置。但是,当我滚动浏览我的 &lt;select&gt; 以查看每个 &lt;option&gt; 时,当我滑动向下滚动列表时,计时器不会重置。

idleTimer = null;
idleState = false;
idleWait = 10000;

$('*').bind('touchstart mousemove keydown onscroll scroll touchmove touchend touchcancel touchleave touch', function () 
    clearTimeout(idleTimer);
    if (idleState == true) 
    idleState = false;
    idleTimer = setTimeout(function ()  
        location.reload();
    idleState = true; , idleWait);
);

我也试过这些:

$('#the-list').bind(...)

$(document).bind(...)

&lt;select&gt; 是否需要不同的触摸事件?由于这是在 iPad 上运行的,因此本机操作系统是否有可能将列表包装在我不知道的东西中?

【问题讨论】:

【参考方案1】:

在谈论事件和样式时,我们根本无法触及一些元素。

选择元素就是其中之一。我认为 Apple 希望保持 select 元素的行为在整个平台上保持一致。

另一个例子是键盘。我们甚至还没有监控键盘可见性的事件。

【讨论】:

我不是在尝试设置它的样式,我只是想让 iPad 在我滚动列表时识别它实际上正在被触摸,每次我滑动到时都会强制计时器重置滚动。 是的,它不会。由于您的任何事件都不会在任何打开的选择框上触发。打开控制台并检查一下:jsbin.com/wexasuxi/1/edit 将鼠标悬停在打开的选择框上时,不会触发“yeah buddy”控制台日志。 检测屏幕触摸怎么样?因此,它不是寻找手指在列表中滑动,而是寻找 iPad 上的触摸,而不管哪些底层元素受到影响?我对 iPad 知之甚少,但这是一回事吗? 遗憾的是,那是不可能的 :( 因为您实际上是在“离开”浏览器并进入操作系统的默认选择组件。但是您也许可以将焦点事件添加到事件列表中。 让我问你,你想完成什么?为什么需要那个计时器?也许有不同的方式..【参考方案2】:

ios 不允许您进行滚动事件。当页面完成滚动时,它们会被查询并被解雇。最近在一个视差项目中工作,这引起了很大的头痛。

【讨论】:

以上是关于滚动 HTML <select> 列表时 iPad 未检测到触摸的主要内容,如果未能解决你的问题,请参考以下文章

<Select> 带有无限滚动下拉菜单的小部件

文字列表滚动(文字轮播)

下拉列表Select的操作

上下滚动列表

下拉列表中没有空白项的空白 HTML SELECT

html中<select>标签用法解析及如何设置select的默认选中状态