【问题标题】:Detect MacOS longpress key popup on textarea在textarea上检测MacOS长按键弹出
【发布时间】:2017-05-11 05:36:01
【问题描述】:

我需要检测用于选择的弹出键何时出现在 textarea 上:

图片中的这个要清楚。

我目前的发现是,像我在小提琴中所做的那样注册事件并不能帮助我在弹出窗口打开时找到独特的东西。

为什么我需要检测弹出窗口? 因为我在 keydown 上注册了一些事件,调用 e.preventDefault()e.stopImmediatePropagation()。例如,在 Firefox 上,这种事件处理会阻止弹出窗口完全工作,因此我需要在打开弹出窗口时禁用我的偶数处理程序。

var txt = document.getElementById('test');

txt.addEventListener('compositionupdate', console.log);
txt.addEventListener('compositionstart', console.log);
txt.addEventListener('compositionend', console.log);
txt.addEventListener('input', console.log);
txt.addEventListener('keyup', console.log);
txt.addEventListener('keydown', console.log);
txt.addEventListener('keypress', console.log);
<textarea id="test" ></textarea>

【问题讨论】:

  • 这解决了吗? stackoverflow.com/q/6139225
  • 不,它没有。我不想检测长按,我想了解该弹出窗口是否可检测到 javascript。
  • 我认为 JS 无法检测到它,因为它是特定于操作系统的。

标签: javascript dom-events


【解决方案1】:

几个月后,我意识到如何处理它。

这主要是为了检测这个弹窗在fabricjs中的使用。 我停止使用 keyup 和 keydown 并将所有内容委托给 oninput 事件。 现在,当任何 oninput 事件触发时,我会将 textarea 中的内容与我的 text var 进行比较,另外我会检查光标前后的位置并检测到更改。

效果很好,但不是,弹出窗口检测不到。

【讨论】:

    猜你喜欢
    • 2020-03-26
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2021-10-14
    • 2015-06-06
    相关资源
    最近更新 更多