В отсутствие подходящих событий, таких как select
и selectstart
(которые действительно отсутствуют в Firefox, который имеет событие select
, но применяет его только к элементам управления формой), все, что вы можете сделать, это использовать мышь и события клавиатуры, как вы предложили в вопросе. Предотвращение действия по умолчанию для всех событий mousedown
в документе не годится, потому что оно препятствует работе всех интерактивных элементов, таких как ссылки и элементы формы. Вместо этого вы могли бы сделать что-то вроде следующего, что убирает выделение, как это сделано с помощью мыши и клавиатуры.
Это не помешает выбору с помощью «Выбрать все» в контексте и редактировать меню, поскольку в Firefox нет способа обнаружить их вообще. Если вам нужно разобраться с этим, опрос - это ваша единственная надежда.
function killSelection() {
window.getSelection().removeAllRanges();
}
document.addEventListener("mousedown", function(evt) {
document.addEventListener("mousemove", killSelection, false);
}, false);
document.addEventListener("mouseup", function(evt) {
document.removeEventListener("mousemove", killSelection, false);
}, false);
document.addEventListener("keydown", killSelection, false);
window.addEventListener("blur", function(evt) {
document.removeEventListener("mousemove", killSelection, false);
}, false);