2011-10-08 68 views
6

没有人知道如何强制contenteditable div的内容做一个div或p包围吗?如果contenteditable的内容是一个空的div,例如在Firefox上选择一个范围,但在chrome上插入文本。我需要的文本强制contenteditable内容div或p

HTML: 
<div id="edit" contenteditable="true"><div id="insert"></div></div> 

Tried this but the results are very inconsistent cross browser: 

var range = document.createRange(); 
range.selectNodeContents(document.getElementById('insert')); 

var selection = window.getSelection(); 
selection.removeAllRanges(); 
selection.addRange(range); 

第二个问题,这里,如果这是一个空CONTENTEDITABLE某种程度上可能,可这也用于手动插入新行,以确保永远不会得到< BR/>标签,而不是一个新的div或p?

感谢

更新

这似乎在一定程度以下工作:

<div id="edit" contenteditable="true"><div id="insert"><br/></div></div> 

通过附加< BR/>火狐,Chrome,Safari浏览器都产生一个单一的空行所有输入都在div内部结束,但Internet Explorer(测试版本9)显示两个空行。如果没有其他解决方案可用 - 任何想法如何解决这个问题,而不使用浏览器检测?

+0

我一直在寻找这个问题的答案,一个月以上,以解决一些仍然在Firefox中的错误。你需要你的帮助。 –

回答

0

您可以在您的css文件中覆盖br标记。

br { 
    display:block; 
    clear: both; 
    height: 1em; 
    line-height: 1em; 
} 

我不太确定em能工作。如果没有,你也必须尝试px格式。