contentEditable divを使用してwysiwygエディターを作成しようとしていますが、Firefoxで太字(および斜体)を処理するときに問題が発生します。
div内のすべてのテキストが選択されている場合、execCommand('bold')はdiv内で機能しますが、そのコンテンツのHTMLを取得しようとすると、HTMLはフォーマットを表示しません。
私が何を意味するかを理解するには、Firefox5で次のHTMLコードを実行してみてください。
<script type="text/javascript">
window.onload = function () {
var output = document.getElementById('output');
var input = document.getElementById('input');
}
</script>
<body>
<button onClick="execCommand('bold', false, null);output.value=input.innerHTML;">Bold</button>
<div style="width: 300px; border: 1px solid #000000;">
<div id="input" contenteditable="true">Some editable text</div>
</div>
<textarea id="output"></textarea>
</body>
</html>
次のことを試してください。
- 「一部」という単語のみを選択してください。太字ボタンをクリックします。これにより、予想どおり、テキストが太字になります。HTML出力は
<span style="font-weight:bold;">
単語を太字にするために使用します。これはやや不幸です(<b>
Safari、Chromeにあります)が、それでも機能します。 - 「編集可能なテキスト」というフレーズ全体を選択します(手動またはCTRL-Aを使用)。太字ボタンをクリックします。contentEditableテキストは太字ですが、予想どおり、HTML出力には太字の書式が適用されていません。
これらの問題を引き起こしている可能性のあるものとそれらを回避する方法についてのアイデアは大歓迎です!