解決した
問題はトリッキーな方法で解決されます。答えは以下に掲載されています。
これは、white-space: pre;
新しいものを編集し、データベースに保存し(そのまま、 with \r\n
)、htmlページのインライン部分として表示します(同じスタイルのdiv内)。
この問題は、AJAX 応答からフィードされた同じテキストエリアを使用して、ポップアップ ダイアログでそのようなテキストを編集しようとすると発生します。jQueryを使用して、受信したテキストをテキストエリアに割り当てようとしています:
$('#textfield').html(text);
実際には、テキストエリアが入力されたダイアログ全体が応答で受信されます。
残念ながら、この html-setter は先頭の改行を削除します。このような一貫性のない動作を排除する方法はありますか? コンテンツ内でさらに発生する改行は、通常どおり保存されます。
サーバーから受信した html コードの例:
<textarea id="newtext" cols="60" rows="3" style="white-space:pre;">
Text with line break at its start.
More line break</textarea>
html
コンテナにコードを配置した後、私はまさにこれを得ました:
<textarea id="newtext" cols="60" rows="3" style="white-space:pre;">Text with line break at its start.
More line break</textarea>
PS コンテキストからさらにコードが追加されましたが、これが何らかの形で役立つとは思いません。
JavaScript:
var d = $('#dialog');
console.log(msg); // correct data
console.log('==============');
d.html(msg).css({position: "absolute", top: (pos.top + height) + "px", left: (pos.left + width) + "px"});
console.log(d.html()); // corrupted data
d.show();
$('#newtext').focus();
コンテナ付き HTML :
<div id="dialog" class="popup">
</div>
アップデート:
@Pointy が示唆したように、実際には jQuery の問題ではありません。html-setter をプレーンな古いものに置き換えました。
document.getElementById("dialog").innerHTML = msg;
同じ問題が発生しました。ブラウザはクロームです。現在、他のブラウザをテストできません。