javascript - 在 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);
是东西
- 添加到Firefox的PDF.js
- 解决这个问题:https
://github.com/mozilla/pdf.js/issues/12359 移动文本光标以开始模糊(在所有其他浏览器中都没有 JS 代码) - 由于一个 8 年前的错误https://bugzilla.mozilla.org/show_bug.cgi?id=860329
- 解决这个问题:https
现在,
- Firefox是唯一需要
setSelectionRange
12359的浏览器 - Safari是唯一一个
setSelectionRange
干扰模糊(焦点丢失/更改)的浏览器,
setSelectionRange
使用户无法摆脱Safari !我添加的内容有助于第二次尝试逃脱。#a
selectionStart > 0
有没有人看到满足所有浏览器(包括Safari和Firefox )怪癖的终极修复?
解决方案
无需 setSelectionRange() 来更新滚动位置。input.scrollLeft = 0;
在 Safari 中没有副作用的情况下会产生相同的效果。
推荐阅读
- java - 如何修复我的扫描仪错误?java.util.InputMismatchException
- javascript - checkall / un-checkall check boxes with js
- javascript - 如何更改 Yup/Formik 中的默认错误文本?
- ruby-on-rails - 如何使用 redirect_to 创建警报
- ruby-on-rails - 如何使用 Rails 连接到 PostgreSQL 容器
- typescript - 即使我用条件检查它是否存在,对象也可能未定义
- angular - Renderer.addClass() 上有多个类
- kotlin - 具有多个键和值的映射
- java - 声明正确的类型以适应泛型类型的函数调用
- c# - 在固定平局上画一个移动点