强制IE contentEditable元素在Enter键上创建换行符,而不会破坏撤消

Dan*_*ich 29 html undo contenteditable

在Internet Explorer上,<p></p>每次按Enter键时,contentEditable DIV都会创建一个新段落(),而Firefox会创建一个<br/> 标记.

作为讨论在这里,可以使用JavaScript来拦截回车按键,并使用range.pasteHTML创建<br/>代替.但这样做打破了撤销菜单; 一旦你按Enter键,你就不能再撤消该点了.

如何强制contentEditable元素在Enter上创建单个换行符而不会破坏撤消?

Joe*_*oel 17

不是确切的解决方案,而是另一种解决方法.如果您使用标记:

<div contenteditable="true">
<div>
content
</div>
<div>
Run Code Online (Sandbox Code Playgroud)

然后按enter将创建新div标签而不是p标签.

  • 有趣!我在其他地方读到过这个,但由于某种原因,我以前无法使用该技术.刚刚在一个简单的HTML页面中尝试过,它在IE6 IE8 FF36 GC4中运行良好.但是,如果用户设法删除内部DIV,它将恢复为"<p>"中断. (3认同)

Fen*_*ton 5

按Enter键按住shift键,不要按住完整段落.默认情况下,这种行为在Firefox中是相同的,给定一个包含段落的可信区域:ie

<div contenteditable="true">
    <p>If you are typing here</p>
<div>
Run Code Online (Sandbox Code Playgroud)

  • 如果他们使用Word Perfect,Open Office甚至Microsoft Word,人们可能会知道惯例,因为这些都表现相同.伴随编辑的这种效果的说明应该足够了.推广公约而不是试图打破它. (2认同)