【问题标题】:Unable to set focus and cursor to input text using javascript in Chrome Console无法在 Chrome 控制台中使用 javascript 设置焦点和光标以输入文本
【发布时间】:2015-03-27 12:20:49
【问题描述】:

这是参考this SO 答案。 我在 web.whatsapp.com (chrome) 上尝试相同的输入搜索字段。 这是我的代码:

document.getElementsByClassName("input input-search")[0].focus()
document.getElementsByClassName("input input-search")[0].select()

以上在 chrome 控制台中不起作用。

还有 jQuery 代码:

$(".input-search").focus() 

不起作用。执行上述方法后还是看不到光标的原因是什么?

【问题讨论】:

  • 只是好奇,你能用ID代替类名吗?
  • document.querySelector(".input-search").focus(); 有效!和$(".input-search").focus();,前提是您包含jQuery
  • @LShetty 它不适合我。
  • @Mark 元素没有 id。它的 Html 是:
  • 您可能有其他错误,这就是原因。这有效 - http://jsfiddle.net/lshettyl/y0f04L88/

标签: javascript jquery google-chrome


【解决方案1】:

我认为这与类、id、javascript 或 jQuery 的问题无关。这是浏览器控制台的工作方式。运行每个命令后,控制台都会获得焦点。因此焦点不适用于控制台的其他输入。

要对其进行测试,请在控制台中运行此代码。

setTimeout(function(){$(".input.input-search").focus()},5000);

执行后立即单击页面上的任意位置以将焦点移出控制台。现在 5 秒后,焦点将设置在输入上。

【讨论】:

  • 天哪!你为我创造了一天。感谢这个很棒的答案,我相信它会帮助很多人。
  • 在很多情况下,我发现setTimeout(function(){$(".input.input-search").focus()},0); 可以解决问题,而$(".input.input-search").focus(); 却没有,尽管两者基本相同。为什么会这样?
  • @AttitudeMonger 两者都不相同。 setTimeout 函数将任务添加到队列中,该任务在给定时间间隔后执行,而 .focus() 不会添加到任何队列中执行。因此,在 setTimeout 的情况下,毫秒的间隔可能足以执行上述任务。您可以阅读有关 setTimeout 工作原理的更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多