在写 OTP input 组件时,发现 input 宽度为 0 时,Android 输入内容方向异常,下面是异常代码和操作步骤:
点击“开始输入”按钮后,键盘输入内容,iOS 系统下表现正常,Android 输入方向则是从右向左。
影响结果代码为style="width: 0;"
,如果宽设置成非0,输入方向则正常。
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title></head><body> <input id="test_input" style="width: 0;" /> <button id="test_button">开始输入</button> <div>当前输入内容: <span id="test_span"></span></div></body></html><script> document.getElementById('test_button').addEventListener('click', () => { document.getElementById('test_input').focus(); }); setInterval(() => { document.getElementById('test_span').innerText = document.getElementById('test_input').value; }, 0);</script>
是 Android 处理机制不同还是 BUG?
这可能是由于 Android 和 iOS 不同的 UI 框架和渲染引擎导致的。在 Android 中,输入文字的方向通常是由输入类型(如 TextView)的布局方向属性(gravity)控制的。在您的示例中,当 input 宽度为 0 时,Android 可能无法正确处理这种情况,导致输入方向异常。
要解决这个问题,您可以尝试在 CSS 中设置 input
的 direction
属性为 ltr
(从左到右)或 rtl
(从右到左),以匹配您的输入方向。这可能会影响 Android 设备的输入方向。
另外,您也可以尝试在 JavaScript 中通过监听 input
事件,实时更新 input
的宽度,以解决输入方向问题。例如:
document.getElementById('test_input').addEventListener('input', (e) => { // 在输入时动态调整 input 的宽度 e.target.style.width = '100px'; // 或其他适合的值});
以上解决方案可能并不完美,因为它们可能会在不同的设备和浏览器上表现不同。如果您需要一个更健壮的解决方案,您可能需要更深入地研究 Android 和 iOS 的 UI 框架和渲染引擎,或者寻找一个跨平台的 OTP 输入组件库。
问题内容: [代码] 问题答案: format : push会改变原数组; type, size : 函数内部(函数声明是一个独立的代码块)改变的只是函数的参数值,不会影响到外部声明的变量。
此代码可编译但不运行;当我试图运行这个程序时,它会给出一个。我做错了什么?
本文向大家介绍阅读下面关于setTimeout和Promise的代码,判断结果会输出什么?为什么?相关面试题,主要包含被问及阅读下面关于setTimeout和Promise的代码,判断结果会输出什么?为什么?时的应答技巧和注意事项,需要的朋友参考一下 依次输出3 5 4 1,首先确立执行顺序:当前宏任务代码块=>微任务=>第二宏任务,new Promise和console.log(5)同属于当前宏
在Mac Zsh 错误的返回结果 在pycharm 里面运行不会报错
我有一个无法解决的问题。编译时,抛出以下内容 谢谢, 丹尼尔
问题内容: 在powershell 3提示符下,我想调用RESTful服务,获取一些JSON,然后漂亮地打印它。我发现,如果将数据转换为powershell对象,然后再将powershell对象转换回json,则会得到一个漂亮的漂亮打印字符串。但是,如果我将这两个转换与一个管道组合成一个衬套,我将得到不同的结果。 TL; DR: 此: …给我的结果与此不同: 原始数据 分两步进行转换 我将删除空白