如果我有如下所述的文字页面。标题中 $("#target").focus();
部分对$()
的调用工作正常。我还可以将该命令绑定到更逼真的页面中的事件。
但是,如果我打开chrome控制台并输入 $("#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>
答案 0 :(得分:34)
您将意识到,当点击Chrome控制台时,它会从当前页面上的任何输入或textarea控件中窃取焦点,反之亦然。这是因为Chrome控制台实际上使用与任何其他HTML页面相同的HTML控件实现,只是使用特殊属性,例如,阻止Chrome以递归方式检查Chrome控制台。
在Chrome控制台中键入命令时,即在Chrome控制台中的输入控件中,它将保持焦点。 Chrome工程师可能选择以不同方式实施它,但在大多数情况下,用户希望在触发命令后继续在Chrome控制台中键入内容,因此任何命令都不会从控制台释放焦点。
答案 1 :(得分:0)
一种可能的方法是:散焦/模糊您的控件。将其滚动出View。输入命令以将焦点放在Chrome控制台中。如果这样,网站将向上滚动到您的控件,则可以确保焦点方法有效。
答案 2 :(得分:0)
有点黑,但可以工作...
尝试用setTimeout :D
包装突出显示的代码,并在计时器到期之前单击网页。
ele2 = $('#input')
setTimeout(function(){ele2.focus()},4000);