【发布时间】:2016-12-27 06:57:46
【问题描述】:
我正在寻找一种方法来跟踪网页上的文本选择。 I need some code to be executed whenever there is a change in selection.我已经在所有主要的桌面浏览器上成功地做到了这一点,但在 Firefox for Android 上似乎并不适用。
我尝试了三种方法(都没有奏效!):
- 尝试捕获
"mouseup"事件并检查是否存在 非空文本选择。问题是"mouseup"没有得到 如果在 mousedown-move-up 期间进行了选择,则触发 顺序! - 尝试对
"touchend"事件执行相同的操作 - 结果相同。 - 尝试捕获
"selectionchange"事件。我看到不是 triggered when the selection changes as it needs the config key"dom.select_events.enabled"待设置。默认情况下这是false,我显然不能要求我的访问者调整浏览器设置:-)
此外,正如预期的那样,如果通过拖动选择开始/结束标记来扩展或减少选择,则不会触发前两个事件。
我现在能想到的唯一解决方案是定期轮询器(使用 setInterval)检查是否有文本选择。这绝对是不干净和反性能的。
任何替代方案和/或建议都会非常有帮助。
【问题讨论】:
-
你在哪里将 mouseup 事件绑定到 body/document/html?尝试将它们组合起来。
-
刚刚在firefox mobile上测试过,确实没有触发任何事件>.>
-
您可以在选择开始时使用 mouseup 事件创建轮询器,然后在 X 秒内没有选择时移除轮询器。除了希望 selectionchange 事件很快成为默认值之外,想不出其他任何方法来解决这个问题:/
-
是的,这就是我现在正在做的事情。实际上,我在 mousedown 上启动轮询器,并在 3 秒内没有选择更改时将其清除。但是感觉很不干净。轮询器每 500 毫秒运行一次,幸运的是,到目前为止似乎并未影响性能。
标签: javascript android events dom-events textselection