Это на 4 года позже, но я только что обнаружил, что на самом деле есть способ заставить IE ≤ 8 делать то, что e.preventDefault()
на mousedown
делает в других браузерах (что предотвращает выбор , а предотвращает фокусировку ): установите атрибут unselectable
! http://jsbin.com/yagekiji/1
Обратите внимание, что в отличие от всегда предлагаемых обходных путей, которые всегда сводятся к setTimeout(function() { thingIDidntWantFocusStolenFrom.focus(); })
, это предотвращает кражу фокуса с помощью цели mousedown
, во-первых!
Что забавно в unselectable
, так это то, что он не наследуется, поэтому его часто упускают из виду в пользу события selectstart
(которое всплывает, и e.preventDefault()
, которое предотвращает выбор, но не предотвращение фокуса) или установите для каждого элемента-потомка обход дерева (например, ответ StackOverflow, который первым подсказал мне, что это возможно , или ряд Тима Дауна из почти идентично ответов ), но вы можете просто установить его на event.target
на mousedown
.
(Также, jQuery билет: http://bugs.jquery.com/ticket/10345)