Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 内容上的innerText可编辑,将某些换行符加倍_Javascript_Dom - Fatal编程技术网

Javascript 内容上的innerText可编辑,将某些换行符加倍

Javascript 内容上的innerText可编辑,将某些换行符加倍,javascript,dom,Javascript,Dom,我试图在内容可编辑div上读取多行用户输入,但在使用contentEditableDiv.innerText读取输入时,换行次数不正确 我尝试了textContent,但它没有返回任何换行符,而innerText有时返回的换行符太多innerHTML似乎不合适,因为我不需要任何HTML代码,只需要文本 如果我的div包含: a b a b 它返回“a”↵b“(971098在示例中) 但是如果我的包含: a b a b innerText返回a↵↵↵b(多了一个↵, 97 10 98(

我试图在内容可编辑div上读取多行用户输入,但在使用
contentEditableDiv.innerText
读取输入时,换行次数不正确

我尝试了
textContent
,但它没有返回任何换行符,而
innerText
有时返回的换行符太多
innerHTML
似乎不合适,因为我不需要任何HTML代码,只需要文本

如果我的
div
包含:

a
b
a

b
它返回“a”↵b“(
971098
在示例中)

但是如果我的
包含:

a
b
a

b
innerText
返回
a↵↵↵b
(多了一个↵, <代码>97 10 98(示例中为)

var input=document.getElementById(“输入”);
var button=document.getElementById(“按钮”);
var result=document.getElementById(“结果”);
按钮。addEventListener(“单击”,(事件)=>{
var charCodes=“”;
对于(变量i=0;i

检查
有点模糊:

UAs应为用户提供一种方法,在不打断段落的情况下,在插入符号位置请求显式换行,例如,作为标识符为“回车”键且设置了移位修饰符的按键事件的默认操作。行分隔符通常出现在诗歌或地址中要插入换行符,用户代理必须插入br元素

如果插入符号位于不允许使用短语内容的地方(例如,在空的ol元素中),则用户代理不得将br元素直接插入插入符号位置。在这种情况下,行为依赖于UA,但用户代理在响应插入行分隔符的请求时,不得生成与请求之前的DOM不一致的DOM

为了符合此定义,可以安全地将

元素包装到
中,Chrome会这样做,但它依赖于UA,因此您不应该依赖于此。此行为的副作用和问题的原因是
div
br
元素都会在
innerText
属性中产生换行符

a的
innerHTML
↵↵b
在Chrome中看起来像这样:

a


B
但是如果你粘贴它(而不是一个字符一个字符地输入),它看起来是这样的

a


B
为了减少换行,需要进一步处理
innerHTML
并处理

在每次输入更改后作为一个换行符,然后阅读
内部文本(在不允许使用
br
等措辞内容的地方要小心,但在现实生活中浏览器可以很好地处理这些内容)。

如果这是一个标准的
元素,您是否尝试访问
input.value
以查看其是否准确?它不是标准输入,而是可编辑的内容
请编辑您的问题,以包含一个.insert代码段,该代码段在我的side@Carlo对于输入
a,代码片段的结果是
97 10 97
↵我的环境中的一个
,在Windows 10上是Chrome 74.0.3729.169。它和你看到的不同吗?