すべてのブラウザで ContentEditable Div のカーソル位置に HTML を挿入する方法

Linda Hamilton
リリース: 2024-11-17 11:52:01
オリジナル
370 人が閲覧しました

How to Insert HTML at the Cursor Position in a ContentEditable Div in All Browsers?

ContentEditable Div のカーソル位置に HTML を挿入する

問題ステートメント

解決策

IE 以外のブラウザに HTML を直接挿入するには、Range オブジェクトの insertNode() メソッドを利用します。

function pasteHtmlAtCaret(html) {
    var sel, range;
    if (window.getSelection) {
        // IE9 and non-IE
        sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();
            var el = document.createElement("div");
            el.innerHTML = html;
            var frag = document.createDocumentFragment(), node;
            while (node = el.firstChild) {
                frag.appendChild(node);
            }
            range.insertNode(frag);
            range = range.cloneRange();
            range.setStartAfter(frag.lastChild);
            range.collapse(true);
            sel.removeAllRanges();
            sel.addRange(range);
        }
    } else if (document.selection && document.selection.type != "Control") {
        // IE < 9
        document.selection.createRange().pasteHTML(html);
    }
}
ログイン後にコピー

貼り付けたコンテンツを選択するオプションを備えた更新されたソリューション

必要に応じて、追加のパラメータを使用して挿入されたコンテンツを選択できます。

function pasteHtmlAtCaret(html, selectPastedContent) {
    // ... Original code ...
    var firstNode = frag.firstChild;
    range.insertNode(frag);
    if (lastNode) {
        range = range.cloneRange();
        range.setStartAfter(lastNode);
        if (selectPastedContent) {
            range.setStartBefore(firstNode);
        } else {
            range.collapse(true);
        }
        sel.removeAllRanges();
        sel.addRange(range);
    }
    // ... Original code ...
}
ログイン後にコピー

このコードは、カーソル位置に HTML を挿入するためのブラウザー間の互換性を提供し、必要に応じて挿入されたコンテンツを選択できる柔軟性を追加します。

以上がすべてのブラウザで ContentEditable Div のカーソル位置に HTML を挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート