Javascript 防止IE中的空行在contenteditable=false时折叠
我有一个设置了Javascript 防止IE中的空行在contenteditable=false时折叠,javascript,jquery,contenteditable,rte,Javascript,Jquery,Contenteditable,Rte,我有一个设置了contenteditable=true的div,以便允许内联编辑(用于RTE目的) 我知道不同的浏览器处理回车键的方式不同,FF inserts和IE inserts 我遇到的问题是在不同的行中输入文本 e、 g案文如下: line 1 line 2 line 3 line 4 在FF中,当输入上述内容,然后切换contenteditable=false时,行格式仍保持预期 但是,如果在IE中编辑多行文本,然后设置contenteditable=false,则所有空行都会
contenteditable=true
的div,以便允许内联编辑(用于RTE目的)
我知道不同的浏览器处理回车键的方式不同,FF inserts
和IE inserts
我遇到的问题是在不同的行中输入文本
e、 g案文如下:
line 1
line 2
line 3
line 4
在FF中,当输入上述内容,然后切换contenteditable=false
时,行格式仍保持预期
但是,如果在IE中编辑多行文本,然后设置contenteditable=false
,则所有空行都会折叠。e、 g:
line 1
line 2
line 3
line 4
如果我随后重置contenteditable=true
,这些折叠的行将被恢复
我猜这与IE使用
有关,你知道我如何防止当contenteditable=false
时行被折叠吗?你可以尝试通过点击回车来绕过IE行为,并添加BR
而不是
pad.addEventListener('keydown',keyDown,false);
function keyDown(e){
if(e.keyCode!=13) return;
pad.innerHTML+='<br />\b';
e.stopPropagation();
e.preventDefault();
return false;
}
<div id="pad" contenteditable="true"></div>
在regexp中,您需要一个文本退格字符,/\b/
不起作用。要实际查看退格字符,您可以在Opera中使用此键运行代码()
,编写一些字母,然后在键盘中按ENTER键,然后将字符复制粘贴到代码中
注意,这段代码应该只在IE中运行,其他浏览器会弄乱换行符
我不知道为什么会这样。IE似乎在
之后添加了一些非打印字符,按ENTER键后必须删除这些字符才能创建即时换行。这确实有效,但阻止了IE在换行内容周围添加标记的本机行为,从而停止使用execcommand的块命令逐行工作(即,居中文本将使所有文本居中,而不是当前行)。似乎在添加contenteditable=true的新行时,即插入,但当切换到contenteditable=false时,它会修剪这些空的标记,折叠该部分。我编写了一个例程,手动将它们添加回空的标记中,以维护新行
padsInnerHTML=pad.innerHTML.replace(/LITERAL_BACKSPACE_CHARACTER/g,'');