【问题标题】:Is there any way in JavaScript to focus the document (content area)?JavaScript中有什么方法可以集中文档(内容区域)吗?
【发布时间】:2011-08-07 23:23:11
【问题描述】:

有没有办法在 JavaScript 中将焦点设置到文档,即内容区域? document.focus() 似乎什么也没做。

【问题讨论】:

  • 该文档是否在浏览器选项卡的最顶部窗口内?该选项卡是否处于活动状态(或在后台)?聚焦文档的具体表现如何?
  • 1.是的,2. 是的,3. 通过让箭头键导致滚动并且没有任何其他焦点,例如链接、按钮、文本框。
  • 我想你想要window.focus();。通过聚焦窗口对象来启用箭头键滚动...
  • 做不到。证明 - 打开开发人员工具(例如在 Chrome 中)并关注它,然后尝试在 javascript 中执行任何操作以将焦点重新夺回实际文档。

标签: javascript focus


【解决方案1】:

HTML 4.01 中,focus 仅在表单控件和链接等元素的上下文中进行讨论。在HTML 5 中,它被更广泛地讨论。但是,文档焦点的工作方式主要取决于浏览器。

你可以试试:

// Give the document focus
window.focus();

// Remove focus from any focused element
if (document.activeElement) {
    document.activeElement.blur();
}

也很好supported

【讨论】:

  • Active Element 得到了很好的支持。见:stackoverflow.com/questions/5318415/…
  • @Erwinus — 不一定是客户,而是访问他们网站的人。对于某些网站,IE 8 仍占网络流量的 20% 左右。
  • @Erwinus——所以给我找一家可以愉快地拒绝 20% 访客的公司。正确应用渐进增强将允许旧浏览器使用网站,也许不是所有的花里胡哨,但它们应该是功能性的。当然,如果您的网站不是赚钱的商业网站,那么您的支持要求可能会有所不同。
  • "你真的觉得 [原文如此] 使用过时浏览器的人有兴趣从你这里购买东西吗?" 是的,实际上.谁告诉你只有拥有最新浏览器的人才会买东西?支持客户不仅仅是网络销售。
【解决方案2】:

看来下面的代码可以工作了……

document.activeElement.blur();

【讨论】:

  • 如果没有元素处于活动状态,它将返回 body 元素。如果 activeElement 不受支持,则会抛出错误。
【解决方案3】:

对打字稿友好的答案:

(document.activeElement as HTMLElement).blur();

参考:https://github.com/Microsoft/TypeScript/issues/5901#issuecomment-396497729

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多