0

MooTools Javascript ライブラリを使用しています。そして、このライブラリはここでいくつかの本当に便利な機能を提供します: http://mootools.net/docs/more/Element/Element.Forms

問題は、この関数が textarea などの「フォーム」要素に対してのみ機能することです。

今、私はオンライン エディターを作成しています。エディター自体は、div 要素とコンテンツ編集機能を使用しています。

mootools (more) ライブラリで getCaretPosition のような関数を使用したい場合、次の行が呼び出されます。

var range = this.getDocument().selection.createRange();

しかし、私はこのエラーを受け取ります:

this.getDocument().selection is undefined

フォーム要素だけがこの選択オブジェクトを持っているようです (このドキュメントでは:S ?)。

フォーム機能を div (またはすべて) 要素に追加する方法はありますか?

4

2 に答える 2

1

そう簡単にはうまくいきません。ソースコードを見てください

たとえば、setSelectionRange2 つのアサーションがあります。1: あるtype == "text"(したがって、入力) または 2:.value読み取り可能なプロパティがあります。どちらかが欠けている要素にそれを適用すると、うまくいきません。

他の場所でアイデアを探すこともできます。たとえば、次のデビッド ウォルシュ ドキュメント選択スニペットが役立つ場合があります。

http://davidwalsh.name/text-select-widget

彼は単にやっている:

var getSelection = function() {
    return $try(
        function() { return window.getSelection(); },
        function() { return document.getSelection(); },
        function() {
            var selection = document.selection && document.selection.createRange();
            if(selection.text) { return selection.text; }
            return false;
        }
    ) || false;
};

幸運を祈ります-これは私が急いでまとめた非常に初歩的な例です。親要素のオフセットとして、選択と可能なキャレット位置(選択の最後の文字に基づく)を提供します- http://www.jsfiddle.net/82czp/ 1/

于 2010-06-25T11:11:21.327 に答える
0

この機能は、CodeMirror ( http://marijn.haverbeke.nl/codemirror/、jsfiddle でも使用)という Javascript プロジェクトで見つけました。素晴らしいプロジェクトです!

于 2010-06-28T21:15:44.147 に答える