1

以下の関数を使用して、現在選択されているテキストを取得したいと思います (ソース: javascript replace selection all browsers )。

私の場合、選択したテキストを置き換えたくありませんが、その前後に何か、主に HTML タグを (ボタンをクリックして) 追加したいと考えています。

例: 選択したテキスト = Hello 新しいテキスト (html) =<u>Hello</u>

選択したテキストを取得するコード:

  function replaceSelection(html) {
        var sel, range, node;

        if (typeof window.getSelection != "undefined") {
            // IE 9 and other non-IE browsers
            sel = window.getSelection();

            // Test that the Selection object contains at least one Range
            if (sel.getRangeAt && sel.rangeCount) {
                // Get the first Range (only Firefox supports more than one)
                range = window.getSelection().getRangeAt(0);
                range.deleteContents();

                // Create a DocumentFragment to insert and populate it with HTML
                // Need to test for the existence of range.createContextualFragment
                // because it's non-standard and IE 9 does not support it
                if (range.createContextualFragment) {
                    node = range.createContextualFragment(html);
                } else {
                    // In IE 9 we need to use innerHTML of a temporary element
                    var div = document.createElement("div"), child;
                    div.innerHTML = html;
                    node = document.createDocumentFragment();
                    while ( (child = div.firstChild) ) {
                        node.appendChild(child);
                    }
                }
                range.insertNode(node);
            }
        } else if (document.selection && document.selection.type != "Control") {
            // IE 8 and below
            range = document.selection.createRange();
            range.pasteHTML(html);
        }
    }

関数を呼び出すコード:

replaceSelection('<span><font color="red">hoho</font></span>');

上記を変更してこれを達成する方法を教えてもらえますか?

これについて助けてくれてありがとう、ティム。

4

2 に答える 2