在不重新聚焦输入的情况下在 Safari 中将输入插入符号位置设置为模糊

Set input caret position on blur in Safari without refocusing input

⏯ Playground Link(答案前)
⏯ Playground Link (after the answer )

<style>input[type=text] { width: 3em; text-overflow: ellipsis; }</style>
<input id=a type=text value=123456789><br>
<input id=b type=text value=123456789>

<script>
  a.addEventListener('blur', function(event) {
    if (event.target.selectionStart > 0)
      event.target.setSelectionRange(0, 0);
  });
</script>

event.target.setSelectionRange(0, 0); 是东西

现在,

  1. Firefox 是唯一需要 setSelectionRange for 12359
  2. 的浏览器
  3. Safari 是唯一 setSelectionRange 干扰模糊的浏览器(重点 loss/change)
    setSelectionRange 将用户困在 Safari#a,没有出路!
    selectionStart > 0 我添加的帮助第二次尝试逃脱。

有没有人看到满足 所有 浏览器(包括 SafariFirefox[=54] 的怪癖的最终修复=]?


跟进 Safarihttps://bugs.webkit.org/show_bug.cgi?id=224425

无需setSelectionRange() 来更新滚动位置。 input.scrollLeft = 0; 在 Safari 中会产生相同的效果而没有副作用。