无法将新创建的元素聚焦在 ipad 上

Posted

技术标签:

【中文标题】无法将新创建的元素聚焦在 ipad 上【英文标题】:Can not focus newly created element on ipad 【发布时间】:2014-08-29 02:07:57 【问题描述】:

我有一部分代码,我在其中动态创建新元素并使它们具有焦点。

代码比较复杂,但是这里是reproducible part on jsfiddle(当你点击输入时,下一个元素被创建,然后焦点被分配给它):

$("body").on( "keypress", ".field", function(e) 
  if ( e.keyCode  == 13 ) 
      $(this).after('<p class="field" contenteditable="true"><br></p>')
      $(this).next().focus();
      e.stopPropagation();
      e.preventDefault();
  
);

这在桌面浏览器中按预期工作,但未能将下一个元素集中在 ipad 上(并且可能在 iphone 上)

【问题讨论】:

FWIW 您的小提琴在 iPhone 4 ios7 Safari 上运行良好。我没有用于测试的 iPad。 其实,我在 Xcode 的 iOS 模拟器上测试过这个,它在 iOS 7.1、iPad 上运行良好... 您是否尝试过在元素创建和焦点之间添加延迟? @kid 是的,我以为 setTimeout 可以解决问题,但是没有用。 【参考方案1】:

Apparently IOS/Safari 仅在触摸事件处理程序中“接受”焦点。我触发了一个触摸事件并在其中插入了.focus()。我在我的 iPhone3S/Safari 上试过这个,它可以工作:

Demo.

Actual *** question.

【讨论】:

我为我的案例尝试了相同的解决方案,但失败了。

以上是关于无法将新创建的元素聚焦在 ipad 上的主要内容,如果未能解决你的问题,请参考以下文章

在 IE 上聚焦和/或选择一个输入元素很慢,在 dom 中有大量输入标签

jquery.show 和 WebDriverException 之后的元素:未知错误:无法聚焦元素

如何将光标聚焦在条纹输入元素上

仅在元素未聚焦时执行功能[重复]

js元素聚焦(vue)

CSS3 - 聚焦父元素的样式[重复]