1

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

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

这在 Chrome 和 Safari 中适用于我,但在其他浏览器中会导致 < br> 或新段落。因为我正在编辑 <pre> 标签,所以我不希望浏览器将 \n 更改为 <br>。我怎样才能做到这一点?

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

4

2 回答 2

0

我认为没有跨浏览器的工作方式可以添加\n...

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"');
}
于 2012-05-05T12:35:58.233 回答
0

我假设您想保存编辑后的内容,那么在获取标签内容时将所有<br>s替换为 s 怎么样?\n像这样:

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

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

于 2012-05-05T12:44:36.867 回答