0

サーバーに投稿した後、ユーザーが作業していた正確な場所を復元できるように、NicEdit リッチ テキスト エディターでカーソル位置を保存しようとしています。

現在、投稿中に範囲変数を保存しようとする前に確実に機能するように、クライアント側でこれをすべて達成しようとしています。

<textarea id="editor" style="height:500px;width:500px;"></textarea>    
<input type="button" value="Save Postion" onclick="SavePosition();return false;" />
<input type="button" value="Restore Postion" onclick="RestorePosition();return false;" />

<script type="text/javascript">
    var editor;
    $(function () {
        editor = new nicEditor({ fullPanel: false });
        editor.addInstance('editor');
    });

    var range = null;
    var sel = null;
    function RestorePosition() {
        editor.nicInstances[0].selRng(range, sel);
        $('.nicEdit-main').focus();
    }
    function SavePosition() {
        range = editor.nicInstances[0].getRng();
        sel = editor.nicInstances[0].getSel();
        $('.nicEdit-main').focus(); 
    }
</script>

ユーザーが単語を強調表示して [保存] をクリックし、別の場所をクリックしてから [復元] をクリックすると、選択が復元されます。
ただし、[保存] を押したときにカーソルが点滅している場合は、[復元] を押すとカーソルが先頭に移動します。

4

1 に答える 1

1

わかりました、これは私が思っていたよりも簡単でした。提供された関数を無視して、コンテンツの編集可能な div を直接操作する必要がありました。ブックマーク文字列を非表示フィールドに保存できるので、ブックマークも使用する必要があります。

また、これは IE でのみ機能する可能性が高いことにも言及する必要があります。

    var bookmark = null;
    function RestorePosition() {
        $('.nicEdit-main').focus();
        var range = document.selection.createRange();
        range.moveToBookmark(bookmark);
        range.select();
        $('.nicEdit-main').focus();
    }
    function SavePosition() {
        $('.nicEdit-main').focus();
        bookmark = document.selection.createRange().getBookmark;
        $('.nicEdit-main').focus();
    }
于 2013-01-04T18:36:53.190 に答える