Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁止在Android/chrome mobile[web]上输入文本键盘_Javascript_Android_Html - Fatal编程技术网

Javascript 禁止在Android/chrome mobile[web]上输入文本键盘

Javascript 禁止在Android/chrome mobile[web]上输入文本键盘,javascript,android,html,Javascript,Android,Html,我有一个文本区和按键监听 <textarea onKeyDown={handleKeyDown}></textarea> 当我在windows PC上打字时,Chrome版本90.0.4430.212(官方版本)(64位)一切都很完美:文本区域中没有显示文本 当我在mac电脑上打字时,Chrome90一切都很完美 但当我拿起我的安卓手机(三星,安卓11),打开手机Chrome(90.0.4430.210)并开始打字时,文本区域中出现了文本。最糟糕的是,我发现的这个bug

我有一个文本区和按键监听

<textarea onKeyDown={handleKeyDown}></textarea>
当我在windows PC上打字时,Chrome版本90.0.4430.212(官方版本)(64位)一切都很完美:文本区域中没有显示文本

当我在mac电脑上打字时,Chrome90一切都很完美

但当我拿起我的安卓手机(三星,安卓11),打开手机Chrome(90.0.4430.210)并开始打字时,文本区域中出现了文本。最糟糕的是,我发现的这个bug只提到了这个,当机器人把我的问题标记为重复时,它会被引用。没有答案:maxlength属性不再工作

以下是我试图阻止mobile chrome输入的内容列表:

  • Maxlength=0(完全不起作用)
  • 只读(=禁用,我需要焦点和选择)
  • 阻塞onKeyUp、onKeyPress、onPaste、onCut、onInput
我还试图手动将textarea的值设置为“”,但如果我设置了一个监听器来执行此操作,我的textarea就会完全崩溃:每次我按键盘上的键,它都会复制以前的所有内容


我的问题是如何防止输入,可能有黑客或诡计?请不要将我发送到android报告论坛,在那里可能会讨论此错误或其他问题…

添加eventlisteners时,我会首先检查事件是否正常工作。必须有一种方法来处理Android上的关键事件:

<textarea id="mytextarea"></textarea>
<textarea id="mytextarea"></textarea>
如果这不起作用您要求的是一个黑客或诡计:尝试聚焦和模糊事件,然后您可以在间隔上运行一个清除文本区域的函数。请注意,这种拦截技巧与良好的用户体验惯例背道而驰,因此肯定应该被视为一种黑客/技巧;-)


阻止键盘,但仍然允许在我的手机上进行选择。@Keith,你能告诉我你的手机和操作系统是什么吗?我正在Android上使用Chrome,并在这里测试了只读->版本。90.0.4430.210无论如何,我需要显示键盘,所以这里不能选择readOnly属性。现在,我在真实的文本区域上方放置了一个假文本区域。它隐藏了选择光标,但至少可以正常工作。
let mytextarea = document.getElementById('mytextarea');

mytextarea.addEventListener('keydown', (event) => {
  console.log(event.code);
});
<textarea id="mytextarea"></textarea>
let int1;

let mytextarea = document.getElementById('mytextarea');

mytextarea.addEventListener('focus', () => {
  clearInterval(int1);
  int1 = setInterval(() => {
    mytextarea.value = '';
  }, 10)
});

mytextarea.addEventListener('blur', () => {
  clearInterval(int1);
});