0

Stackoverflow コミュニティの皆様

str.bold()テキストを<b></b>タグで囲む方法があります。これは、小さな WYSIWYG エディターに最適です (何百ものオープン ソース ソリューションのいずれかを使用する必要があると言う人もいますが、これは学習目的でもあります)。

問題は、テキストを太字にする方法です。

ここに私の試みがありますhttp://jsfiddle.net/Kxmaf/178/

あることは知っていますがeditor.execCommand('bold', false, '');、これはブラウザごとに異なる HTML 結果を生成しています。<b></b><i></i>、だけあればいい<u></u>

どんな助けでも大歓迎です:)

4

2 に答える 2

2

ユーザーの選択が段落にまたがる場合を考慮する必要があります。例 (パイプで示される選択境界):

<p>One <b>t|wo</b></p>
<p>Thr|ee</p>

これを処理するには、ユーザーの選択範囲内のすべてのテキスト ノードと部分テキスト ノードを<b>タグでラップすると同時に、既に太字になっているテキスト ノードを検出してそのままにしておく必要があります。これは簡単ではdocument.execCommand()なく、大規模な WYSIWYG エディターと同様に、すべてを処理します。

ほとんどのブラウザーでは、スタイル モードを切り替えることができます。これにより、 などの要素を使用したスタイル設定<b>と、スタイル属性を持つ要素を<i>使用したスタイル設定のいずれかを選択できます。<span>「StyleWithCSS」コマンドを使用してこれを行うことができ、古いブラウザーでは「UseCSS」にフォールバックします。次のコマンドは、非 CSS バージョンを使用するように切り替えます。

try {
    if (!document.execCommand("StyleWithCSS", false, useCss)) {
        // The value required by UseCSS is the inverse of what you'd expect
        document.execCommand("UseCSS", false, !useCss);
    }
} catch (ex) {
    // IE doesn't recognise these commands and throws.
}

<b>最後に、 etcの代わりに CSS クラスを使用するように切り替えた場合は、RangyライブラリのCSS クラス アプライヤー モジュールを使用できます。

于 2012-06-28T10:08:36.957 に答える
2

特定のスタイルボタンを押すときに、選択した文字列を javascript でループするのはどうですか。、、 ....などのいくつかのタグを配列内に保存し、選択した特定の文字列をループすることができます。そのため、タグが見つかったときにスタイルボタンのスタイルを変更して、どのスタイルが使用されているかをユーザーに知らせることもできます。スタイルの選択を解除した後、もう一度ループして文字列からタグを削除します。

于 2012-06-28T09:43:54.230 に答える