【问题标题】:Javascript timeout or mouseup event, but not both in Android browsers?Javascript 超时或 mouseup 事件,但不是在 Android 浏览器中?
【发布时间】:2017-01-04 15:09:48
【问题描述】:

我正在尝试编写一个 JavaScript 网络应用程序,其中对 mouseup 执行操作,并在用户按住按钮足够长的时间后执行另一个操作。我的代码适用于我在 Windows 和 Linux 上尝试过的所有浏览器,但在我尝试过的所有三种 Android 浏览器(Chrome、Firefox 和本机)上,如果计时器触发,我似乎会丢失 mouseup 事件。

我的代码的核心看起来很简单:

btn.addEventListener("mousedown", function(){
   myTimer = setTimeout(function(){
     btn.textContent += "t";
     outVal = "b";
   }, 500);
});
btn.addEventListener("mouseup", function(){
   clearTimeout(myTimer);
   btn.textContent += outVal;
   outVal = "a"
});

Jsfiddle 在这里:https://jsfiddle.net/wanderinglogic/sycL0e53/

在非Android浏览器上,如果用户在短时间内释放按钮,则输出a,如果用户按住按钮(500ms后)输出t,然后当用户释放按钮时输出@ 987654327@.

但是在Android浏览器上,如果用户在短时间内释放按钮,它仍然会输出a,如果用户按住按钮(500ms后)仍然输出t,但最后的按钮释放不会'不输出b

Android 上是否有一些我不知道的额外事件干扰了我的mouseup

【问题讨论】:

  • 你当然在比这两个事件处理函数更高的范围内声明了myTimer,对吧?
  • 可能是因为他们使用的是触摸事件而不是鼠标事件。
  • @ScottMarcus 是的,我试图将代码的核心放在帖子中。完整代码在 jsfiddle 中。

标签: javascript android web-applications event-handling cross-browser


【解决方案1】:

好吧,Android(通常)确实没有鼠标输入......触摸会更好地描述它。因此,用户输入的工作方式与非触摸界面不同。这整个敏感的主题是鼠标悬停事件的死亡。见:understanding touch events

【讨论】:

    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2011-05-04
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多