12

私がやっている:

alert($("#div").text());

このようなもので:

<div id="div">
&lt;div&gt;
Some text
&lt;div&gt;
</div>

なぜエスケープされたコンテンツですか?形式が正しくない場合があり、ドキュメントの残りの部分に干渉したり、破損したりしたくないためです。

FF では、改行を保持して表示されます。IE7ではそうではありません。空白を維持する必要があります。このコンテンツは、実際には編集用のテキストエリアに入っています。

リッチ テキスト エディターを推奨する前に、このコードは実際には HTML ではありません。カスタム方言です。

IEで改行を保持するにはどうすればよいですか?

4

3 に答える 3

3

回避策については、こちらをご覧ください。

ハックは、cloneNode()を使用して、最初にコンテンツが必要な要素のクローンを作成することです。

次に<pre>、createElement()を使用して要素を作成し、クローンノードをその要素に追加します。

これで、そのcreate要素のinnerTextを取得し<pre>、一時オブジェクトを削除することができます。これで、空白が保持されたテキストができました:)

var cloned = targetElement.cloneNode(true);
var pre = document.createElement("pre");
pre.appendChild(cloned);
var textContent = pre.textContent ?
  pre.textContent : pre.innerText;
delete pre;
delete cloned;

要素のクローンを作成する理由は、appendChild()が要素をDOMから引き出し、DOMの正しい位置に再挿入するのが面倒だからです。

うまくいけば、これはそこにいる少数の人々を助けるでしょう:)

于 2009-03-18T01:32:22.917 に答える