javascript - FireFox 上的 contentEditable div 多行问题
问题描述
我有一个 `contentEditable="true" 的 div
<div id="msgInput" contentEditable="true"></div>
当用户输入并按下“输入”时,它将用户输入的内容附加到另一个 div
<div id="output"></div>
但我需要它,以便用户可以键入多行(使用 shift+enter)而不触发“enter”键上的“keydown”事件
以下是我实现此目的的方法:(请注意,我添加了“输入”事件侦听器,因为我需要保存用户在状态变量中键入的内容)
let input = document.getElementById('msgInput');
let output = document.getElementById('output');
let state = '';
input.addEventListener('input', function(event) {
state = event.target.textContent;
});
input.addEventListener('keydown', function(event) {
if (event.key === 'Enter' && !event.shiftKey) {
event.target.innerHTML = '';
output.innerHTML = state;
event.preventDefault();
}
});
在 Chrome 上,这工作正常,
例如,如果我输入“first”
然后shift+enter,
然后输入“秒”
然后按回车,它将像这样附加:
first
second
这正是我想要的。
但是在Firefox上,它附加在一行中(合并为一个单词)
firstsecond
我需要它在 Firefox 中具有与 chrome 中相同的行为
解决方案
您可以尝试替换textContent
为innerText
:
input.addEventListener('input', function(event) {
state = event.target.innerText;
});
推荐阅读
- javascript - 涉及递归函数的迷宫 Javascript 问题
- r - 我如何从fasta文件中分离国家和加入
- python - Python openpyxl库拒绝加载我的excel文档
- .htaccess - 在同一个 .htaccess 中重写多个 URL
- c# - 使用谓词绑定在命令上的搜索栏不起作用。Xamarin.Forms
- git - 带有 VSCode + WSL2 + Docker 的 Windows 上的 Git + SSH 密钥问题
- r - 线性混合自然样条模型的峰值速度个体年龄
- python - discord.py 播放命令在使用 heroku 时出现 opus 问题
- shell - Solaris 11 是否已经安装了 ssh-key 的脚本测试?没有 ssh-copy-id ssh-pass
- module - 警告缺少以下符号