Как я могу предотвратить выделение любого текста во время события mousedown в Firefox?
У меня есть обработчик событий, который открывает и фокусирует новую вкладку браузера во время события mousedown.
Если пользователь слегка перемещает указатель мыши, во время движения мыши некоторый текст подсвечивается непреднамеренно незадолго до открытия новой вкладки.
Позже, после закрытия этой новой вкладки, фокус немедленно возвращается к исходной вкладке, и эта вкладка действует как кнопка мыши все еще задействована после предыдущего щелчка (но это не так), а перемещение мыши (даже без нажатия кнопки) просто изменяет диапазон непреднамеренно- выделенный текст, пока пользователь не щелкнет где-нибудь на странице этой вкладки (в результате чего событие mouseup, наконец, не будет обнаружено этой вкладкой).
Новая вкладка открывается и фокусируется так быстро, что на начальной вкладке никогда не происходит срабатывания мыши.
Эта проблема возникает в основном в Firefox. Вот пример кода:
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<title>mousedown highlighting issue</title>
<script>
function mousedownHandler()
{
let url = "https://www.w3.org/TR/uievents/#event-type-mousedown";
let windowName = (new Date()).getTime().toString();
window.open(url,windowName).focus();
}
function main()
{
document.body.addEventListener('mousedown', mousedownHandler);
}
window.addEventListener('load', main);
</script>
</head>
<body>
<h1>Lorem Ipsum</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue ante eget orci aliquam, vel blandit mauris congue. Vestibulum gravida blandit est eu vestibulum. In id posuere eros. Suspendisse sed mi bibendum, tincidunt nisl vel, laoreet lacus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque vitae tellus varius, pellentesque erat eget, condimentum ex. Mauris blandit arcu tellus, laoreet varius diam bibendum in. Quisque tempor lacinia libero, at feugiat urna viverra id. Integer dapibus mollis enim, quis commodo tortor venenatis eu. Integer mollis lobortis urna sed tincidunt. Morbi eu rutrum tortor. Pellentesque felis urna, bibendum vitae erat nec, dapibus porttitor enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin eu iaculis ante.
</p>
</body>
</html>
Вы можете воспроизвести проблему в Firefox, быстро попытавшись выделить текст на странице, закодированной выше.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Самое простое решение - добавить event.preventDefault(), чтобы предотвратить выполнение действия mousedown по умолчанию (это действие по умолчанию, когда браузер распознает нажатие мыши и выделяет текст при перемещении мыши):
function mousedownHandler(event) {
event.preventDefault();
let url = "https://www.w3.org/TR/uievents/#event-type-mousedown";
let windowName = (new Date()).getTime().toString();
window.open(url, windowName).focus();
}
document.body.addEventListener('mousedown', mousedownHandler);