通过javascript从contenteditable div获取文本内容

Sur*_*Air 27 html javascript

我想通过javascript从contentEditable div中检索文本内容.这样做有哪些选择?我尝试过innerHTML,但它不起作用.

Mir*_*cea 40

为什么不使用textContent:

var contenteditable = document.querySelector('[contenteditable]'),
    text = contenteditable.textContent;
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/E4W8y/1/

  • 因为textContent不尊重换行符(至少在chrome中) (11认同)

B T*_*B T 15

不幸的是,我发现这innerText是在可疑的dom节点中保留换行符的唯一方法.我正在做什么(目前仅在Chrome中测试)是这样的:

 var innerText = editableDiv.innerText  // using innerText here because it preserves newlines
 if(innerText[innerText.length-1] === '\n') 
     innerText = innerText.slice(0,-1)             // get rid of weird extra newline
 return innerText
Run Code Online (Sandbox Code Playgroud)

  • 在 Chromium 78 和 Firefox 71 上,当我在 div 上输入 `a<enter><enter>b` 时,我得到 `a\n\n\nb` (3 个换行符,而不是预期的 2 个)。这是预期的吗?有办法解决吗?[测试程序](https://github.com/cirosantilli/cirodown/blob/3473e7f1c5941c3cd3f879185e44edecab136615/editor.html#L52)和[此补丁](https://github.com/cirosantilli/cirodown/issues/2)。 (4认同)
  • 在不使用jQuery的情况下,这应该是可接受的答案.顺便说一下,我使用`trim()`来摆脱起始和尾随空白. (2认同)
  • @CiroSantilli郝海东冠状病六四事件法轮功,你是我能找到的对这个问题的唯一认可。N 个行终止符变成 2N-1 个行终止符。我绝望的解决方法:“string.replace(/\n\n/g, '\n')”。不幸的是它并不一致。这种几乎翻倍的犯罪发生在_键入_换行符上,而不是_粘贴_换行符上。 (2认同)

Moi*_*man 6

使用jQuery并做

var content = $('#my-contenteditable-div').html();

也查看这些链接:

http://west-wind.com/Weblog/posts/778165.aspx

从contentEditable div中提取文本

  • 这里真的不需要jQuery. (38认同)

小智 5

lblMailContent 是可编辑字段的ID.

var details= document.getElementById("lblMailContent").innerHTML;
Run Code Online (Sandbox Code Playgroud)

把这段代码放进去clientClick.它对我很有用.