1

このコードを使用して、コンテンツ編集可能な HTML ドキュメントに新しい行を挿入しています。

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

これは Chrome と Safari では機能しますが、他のブラウザーでは < br> または新しい段落になります。< pre> タグを編集しているため、ブラウザで \n を < br> に変更したくありません。これどうやってするの?

range.insertNode() のような関数を使用したり、FireFox で insertBrOnReturn を操作したりしましたが、常に同じです。ブラウザが入力を変更せずにドキュメントに \n を挿入する方法はありませんか?

4

2 に答える 2

0

追加するクロスブラウザの作業方法はないと思います\n... contenteditableにはあまり詳しくありませんが、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"');
}
于 2012-05-05T12:35:58.233 に答える
0

あとで編集した内容を保存したいということもあると思いますので、タグの内容を取得する際にs をすべて<br>s に置き換えてみてはいかがでしょうか。\nちょうどこのような:

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

編集: innerHTML の代わりに innerText を使用することもできます。そうするとき、すべての改行が<br>タグとして表示されます (少なくとも、Chrome でその結果が得られました)。この解決策は素晴らしいものではありませんが、少なくとも常に同じです。

于 2012-05-05T12:44:36.867 に答える