2019 обновление
Все основные браузеры теперь поддерживают событие selectionchange
, которое выполняет эту работу.Firefox был последним браузером, получившим его, и он имел его без флага конфигурации с версии 52 (выпущена в марте 2017 года).
Оригинальный ответ
Естьнет кросс-браузерного способа обнаружения изменений в выборе.IE (начиная с версии 5.5, я думаю) и браузеры WebKit / Blink (например, версии Chrome, Safari и Opera последних двух лет) поддерживают событие selectionchange
на document
, которое выполняет именно то, что вам нужно.
Firefox и pre-Blink Opera не имеют такого события, и все, что вы можете сделать, это обнаружить изменения выбора, сделанные с помощью событий клавиатуры и мыши, что является неудовлетворительным (нет способа обнаружить «Выбрать все» из контекста или редактировать меню, например), или просто опросите объект Selection
, возвращаемый window.getSelection()
(проверка свойств anchorNode
, anchorOffset
, focusNode
и focusOffset
выбора относительно их предыдущих значений должна быть достаточной).