首页 > 解决方案 > 在 Safari 中将输入插入符号位置设置为模糊而不重新聚焦输入

问题描述

⏯游乐场链接(答案前)
⏯游乐场链接(答案后https://stackoverflow.com/a/67071637/112882

<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是唯一需要setSelectionRange12359的浏览器
  2. Safari是唯一一个setSelectionRange干扰模糊(焦点丢失/更改)的浏览器,
    setSelectionRange使用户无法摆脱Safari !我添加的内容有助于第二次尝试逃脱。#a
    selectionStart > 0

有没有人看到满足所有浏览器(包括SafariFirefox )怪癖的终极修复?


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

标签: javascripthtmlfocuscaretonblur

解决方案


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


推荐阅读