使用javascript编辑HTML:插入\ n而不是作为新行

时间:2012-05-05 09:50:16

标签: javascript dom wysiwyg

我正在使用此代码在内容可编辑HTML文档中插入新行:

execCommand("insertHTML", false, '\n');

这适用于我在Chrome和Safari中,但它会导致< BR>或其他浏览器中的新段落。因为我正在编辑<预>标签,我不希望浏览器将\ n更改为< BR取代。我怎么能这样做?

我已经尝试过使用range.insertNode()等函数或者在FireFox中操作insertBrOnReturn,但它总是一样的。如果没有浏览器更改我的输入,是否有办法在文档中插入\ n?

2 个答案:

答案 0 :(得分:0)

我认为没有跨浏览器的工作方式来添加\n ...我对熟悉的内容并不熟悉但是因为它正在改变innerHTML你可能会做类似的事情

var currentContent = myContent; // "currentContent holds" the current content
execCommand("insertHTML", false, '\n'); // inserts the line break
if (newContent !== currentContent + '\n') { // "newContent" holds the content afterwards
  console.log('use String.prototype.replace to replace created tag with "\n"');
}

答案 1 :(得分:0)

我假设您之后要保存已修改的内容,那么在获取代码内容时如何用<br>替换所有\n s?就像这样:

document.getElementById("editable").innerHTML.replace(/<br>/g, "\n");

编辑:您也可以使用innerText而不是innerHTML。这样做时,所有换行都会显示为<br>标记(至少我在Chrome中得到了结果)。这个解决方案不是很好,但它至少总是一样的。