【问题标题】:Force browser to keep focus on a specific element强制浏览器专注于特定元素
【发布时间】:2012-11-01 16:00:33
【问题描述】:

我刚刚完成了一个使用 HTML5 和 CSS webkit 动画的 iOS 网络应用程序。

假设我有元素“A”,当我在屏幕上拖动时,它会跟随我的手指。当元素 A 跟随我的手指时,我注意到一些丢帧。这仅在 iPad 上很明显。如果我一直触摸元素 A,那么在不丢帧的情况下跟随我的触摸移动会好很多,但是如果我触摸其他任何东西而不是元素 A 并返回到元素 A,那么元素 A 会丢帧很长时间试图跟随我的手指,就像浏览器一样因为我点击了其他地方,所以失去了对元素的关注。

有没有办法强制浏览器将焦点保持在元素 A 上,这样它就不会丢帧?

提前致谢

【问题讨论】:

  • 取决于您用于移动元素 A 的代码或其他正在关注焦点的元素。代码会有所帮助。

标签: html animation webkit


【解决方案1】:

您基本上可以通过重新聚焦元素来取消blur 事件。以下是使用 jQuery 的方法:

$(document).ready(function () {
    $(element).blur(function () {
        var self = this;
        setTimeout(function () { self.focus(); }, 20);
    });
});

【讨论】:

  • 我添加了,它没有任何区别。我在“var self = this”之后放了一个console.log,它永远不会触发,这意味着永远不会调用blur()事件,我点击其他任何地方,但我无法让这个函数打印单个console.log。
  • @user1791848 在 $(document).ready() 上添加事件处理程序。更新示例
  • 它在文档上已准备就绪,即使在我放置 tabindex 和其他所有内容以确保 iOS 读取模糊和焦点事件之后,它也无法正常工作。我认为移动 Safari 在应用于 div 时对这些事件一无所知。
  • Divs 不是可聚焦的元素。所以你不能在那里获得或失去焦点。你是说你使用锚。
  • 元素“A”是指元素“X”或“Y”或任何随机元素。它是一个 div,位于 touchmove 之后的绝对位置。我可以通过 tabindex 强制对 div 进行焦点操作(某些浏览器支持)但是移动 safari 似乎不支持它。所以我无法知道 div 何时引起浏览器的注意。
猜你喜欢
  • 2016-12-08
  • 2015-02-28
  • 2017-10-01
  • 2019-10-12
  • 1970-01-01
  • 2019-06-03
  • 2014-03-07
  • 2015-03-07
  • 1970-01-01
相关资源
最近更新 更多