0

HTMLエディターを使用していて、カーソル位置にHTMLコントロールを挿入する機能を拡張したいと思いました。

私が使用しているコードは次のとおりです。

document.execCommand("insertHTML", false, "<input type=\"text\">") 

このコードはChromeとFFで正常に機能しますが、IEで問題があります。それは単に機能せず、「無効な引数」エラーをスローします。私は次のコードを試しました:

if (document.selection && document.selection.createRange) {
     range = document.selection.createRange();
     range.collapse(false);
     range.pasteHTML(value);
}

ただし、テキストボックスは、HTMLエディタ内ではなく、ドキュメントの上部に追加されます。

これについて助けが必要です。前もって感謝します。

4

1 に答える 1

0

その方法では、IE と最新のブラウザ標準を混在させて一致させているようです。あなたが思っているように機能するかどうかはわかりません。Firefox の console.log() または alert() を少し試して、どのブラウザが実際にそのメソッドに入るかを確認してください:)

Firefox には document.selection がありません。代わりに window.getSelection() です:

以下で遊んでみてください。両方のブラウザで動作するはずです

if (document.createRange) { // "Standards" :)
    var selection = window.getSelection();

    if (selection.rangeCount > 0) {
        selRange = selection.getRangeAt(0);
        var node = document.createTextNode(stringValue);
        selRange.insertNode(node);
        selRange.setStartAfter(node);
        selection.removeAllRanges();
        selection.addRange(selRange);
    }

} else if (document.selection) { // fallback for IE6-8
    selRange = document.selection.createRange();

    selRange.select();
    selRange.pasteHTML(stringValue);
}

それをメソッドにカプセル化して「stringValue」を渡すと、どこにでもテキストを挿入できます。

それが役立つことを願っています!

于 2012-12-18T16:13:49.463 に答える