javascript - 如何将处理程序绑定(bind)到窗口上的选择更改?

标签 javascript selection dom-events

基本上我需要知道 window.getSelection() 何时更改并将处理程序绑定(bind)到此事件。想法?

OBS:请注意,我不希望在 INPUT 或 TEXTAREA 上绑定(bind)选择更改。我说的是窗口中的任何选择。

最佳答案

2019 年更新

所有主流浏览器现在都支持 selectionchange event ,它完成了工作。 Firefox 是最后一个获得它的浏览器,自版本 52(2017 年 3 月发布)以来,它没有配置标志。

原始答案

没有跨浏览器的方法来检测选择的变化。 IE(我认为从 5.5 版开始)和 WebKit/Blink 浏览器(例如,过去几年的 Chrome、Safari 和 Opera 版本)支持 selectionchange document 上的事件这正是你想要的。

Firefox 和 pre-Blink Opera 没有这样的事件,你所能做的就是检测通过键盘和鼠标事件所做的选择更改,这是不令人满意的(无法从上下文或编辑菜单中检测“全选”,因为例如),或者简单地轮询 Selection window.getSelection() 返回的对象(检查选择的 anchorNodeanchorOffsetfocusNodefocusOffset 属性与其先前的值应该足够了)。

关于javascript - 如何将处理程序绑定(bind)到窗口上的选择更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991511/

相关文章:

c# - 具有基于 Entity Framework 实体的验证的 Javascript 数据库

javascript - socket.io:在同一个HTML页面中正确地更换房间并实现聊天

wpf - TabControl 在 Window.Show 上丢失选定的选项卡

javascript - 如何使用 JavaScript 检测地址栏更改?

javascript - 如何用简单的 JavaScript 停止事件再次运行?

javascript - AngularFire 取消 AngularJS 数组中的项目

javascript - Ember 需要模型中一个 Promise 的数据用于 model() 中的另一查询

JavaScript:当文本位于文本区域内时,所选文本不会被替换

c# - 扩展选择模式、虚拟化和 IsSelected 绑定(bind)

javascript - 了解 JavaScript 事件并应用 jQuery 事件/插件?