如何将处理程序绑定到窗口上的选择更改?

Kar*_*des 13 javascript selection dom-events

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

OBS:请注意,我不打算在INPUT或TEXTAREA上绑定选择更改.我正在谈论窗口中的任何选择.

Tim*_*own 17

没有跨浏览器方式来检测选择的更改.IE(我认为自5.5版本以来)和WebKit/Blink浏览器(例如,过去几年的Chrome,Safari和Opera版本)支持一个selectionchange事件,selectionchange它完全符合您的要求.

Firefox和pre-Blink Opera没有这样的事件,您所能做的只是检测通过键盘和鼠标事件进行的选择更改,这是不能令人满意的(例如,无法从上下文或编辑菜单中检测到"全选"),或者简单地轮询document通过返回的对象Selection(检查选择的window.getSelection(),anchorNode,anchorOffsetfocusNode对他们以前的值的属性应该是足够了).


Sin*_*hus 9

没有跨浏览器事件.

但是,确实存在一个被调用的事件selectionchange,它触发文档中选择的每个更改,但它仅在IE和最近的WebKit(Chrome/Safari)中受支持,因此没有Firefox/Opera.

你可以使用这样的selectionchange事件:

$(document).on('selectionchange', function(e) {
    console.log('selectionchange', e.originalEvent); 
});
Run Code Online (Sandbox Code Playgroud)

jsfiddle的例子