2012-05-05 9 views
1

は、私は、コンテンツ編集可能なHTML文書内の新しい行を挿入するには、このコードを使用していますが:JavaScriptを使用して編集HTML:挿入 n個の代わりに、新しいラインとして<br>

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

これはChromeとSafariで私の作品それ以外のブラウザでは< br>または新しい段落になります。私は< pre>タグを編集中ですので、ブラウザを\ n < brに変更したくありません。これどうやってするの?

私はすでにrange.insertNode()やFireFoxのinsertBrOnReturnを操作しようとしましたが、常に同じです。ブラウザが自分の入力を変更せずに文書に\ nを挿入する方法はありませんか?

答えて

0

私は\nを追加するクロスブラウザ作業方法がないと思います...私はのcontentEditableとTHAT慣れていないよそれは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"'); 
} 
+0

私はまた、さまざまな方法でブラウザを処理するブラウザスイッチについて考えましたが、それは問題ではありません。しかし、console.logは問題を解決しません。 – JonnyF

+0

ブラウザが '\ n'の挿入をサポートしているかどうかをチェックする方法を知っておく必要があります。もしあなたがコンテンツを置き換えなければ...あなたが文字列編集に精通しているように見えましたので、問題を回避したり回避したりするための出発点を与えてください。 –

+0

さて、私は今ブラウザを使っています。 SafariとChromeは動作しています - FireFox、IE、Operaはいないので、私はこれをチェックする必要はありません。 – JonnyF

0

ような何かを行うことができ、私は」後で編集したコンテンツを保存することを前提としていますので、<br>をすべて\nに置き換えてタグの内容を取得するのはどうですか?ただ、このような:

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

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

+0

私はこの解決方法についても考えてきましたが、それは私のために働いていません。 HTMLコードだけでなくエディタでも編集できるため、間違ったタグを付けずにソースコードを編集する際に、ソースコードをクリーンにする必要があります。 "insertHTML"の代わりに "insertPLainText"のようなものを実行する方法はありませんか? – JonnyF

+0

@あなたの編集:それは問題ではありません。私はbrの代わりに単純な\ nを使いたいと思います。単にexecCommand( "insertHTML"、false、 '
')を使うだけで、これは私がテストしたすべてのブラウザで動いています。 – JonnyF

関連する問題