Javascriptなしでワークアウトできた最高のものは
HTML:
<div contenteditable="true">
<div>asdfasdf</div>
</div>
以下:
div[contenteditable=true] {
outline: none;
&>p,
&>div {
margin: 0 0 0 30px;
display: list-item;
}
}
ビンhttp://jsbin.com/idekix/6/edit
しかし、ここにはいくつかの欠点があります。
Win8 上の最初の非常に大きな FireFox 18.0.1 では、代わりにdiv
orp
タグを新しい行として挿入し、 doublebr
のようなものを使用します。
2番目は、すべてを削除してタイプを開始してEnterキーを押すと、ブラウザの動作が大きく異なり、Chromeはcontenteditable
コンテナのテキストノードとして最初の行を挿入し、すべての新しい行をに入れるよりもdiv
、Opera 12.12がそれをよりよく処理し、最後のdiv
ノードを削除できます.IE9-10はジャンプを開始し、再度開始した後はp
代わりにタグを使用しますdiv
(それはそのような災害ではなく、一貫性がないだけです)が、FireFoxはまだそのbr
動作を変更しようとさえしていません. また、IE10デバッグモードでIE7-8をチェックアウトしようとしていますが、実際のブラウザではありませんが、Operaと同じです。
空のノードを挿入できる 3 つ目は、Opera によって行われた優れた仕事について言えば、Opera http://jsbin.com/uxesez/1/editでこのビンを参照してください。マークアップはここでオリジナルにより近くなっています。 empty を挿入することはできませんli
。
つまり、すべてのテストは Windows 8 64 ビット プラットフォームで実行され、Chrome 24.0.1312.56 m、FireFox 18.0.1、Opera 12.12、および IE デバッグ バーによって古い IE をエミュレートする IE10 が使用されています。他のプラットフォーム/バージョンでは状況が異なる可能性があることを認めてください。
上記のすべてを要約すると、contenteditable
非常に優れたブラウザー サポート範囲http://caniuse.com/contenteditableがありますが、すべてのブラウザーには独自の実装があります。これは別の理由です。したがって、クロスブラウザ JavaScrpt の手間がなければ、それを使用することはできません。また、私の個人的な意見として、ブラウザーのほぼすべてのリッチ テキスト エディターの要素として使用する場合contenteditable
の軽量な置き換えのような、コア アイデアの方が適しています。iframe
Mozilla ソースからの UPD https://developer.mozilla.org/en-US/docs/HTML/Content_Editable
HTML5 では、どの要素も編集可能です。この機能はかなり前に導入されましたが、現在は WHATWG (html 現在の仕様) によって標準化されています。一部の JavaScript イベント ハンドラーを使用すると、Web ページを完全で高速なリッチ テキスト エディターに変換できます。
次のステップは、私のささやかな提案です。私の意見では、代わりに実際の編集可能なフィールドを使用すると便利です。このビンhttp://jsbin.com/ojiyok/7/editに行った非常に多くのプロトタイプバージョンにはまだ改善の余地がありますが、実際よりも予測可能な動作をしているように見えconteneditables
ます。一度にすべてのブラウザで必要です。