Команда jquery focus не работает из командной строки chrome
Если у меня есть текстовая страница, как описано ниже. Вызов $("#target").focus();
в разделе $()
в заголовке работает просто отлично. Я также могу связать эту команду с событиями на более реалистичной странице.
Однако, если я открою консоль хром и наберу $("#target").focus();
, это не изменит фокус. Если я запустил $("#target").val("something");
, это изменит значение на экране, но оно не работает с фокусом.
Очевидно, что это не критическая проблема, но мне действительно интересно, почему это происходит. У кого-нибудь есть идея?
<html>
<head>
<script src="jquery-1.9.1.js"></script>
<script>
$(function(){
$("#target").focus();
});
</script>
</head>
<body>
<input id="target" type="text">
</body>
</html>
Ответы
Ответ 1
Вы поймете, что при нажатии на консоль Chrome он будет красть фокус с любого элемента управления ввода или текстовой области на текущей странице и наоборот. Это потому, что консоль Chrome фактически реализована с использованием тех же элементов управления HTML, что и любая другая HTML-страница, только со специальными свойствами, которые, например, не позволяют Chrome проверять консоль Chrome рекурсивно.
При вводе команды в консоли Chrome, т.е. в элементе управления ввода, который является частью консоли Chrome, он будет держать фокус. Возможно, инженеры Chrome решили реализовать его по-разному, но в большинстве случаев пользователь хочет продолжить ввод в консоли Chrome после запуска команды, поэтому никакая команда не освободит фокус с консоли.