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>

如果用户突出显示一个单词,点击保存,点击其他地方然后点击恢复选择将被恢复。
但是,如果在按下 Save 时光标只是在那里闪烁,则按下 Restore 会将光标移动到开始处。

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 回答