通过JavaScript在文本区域中保存和加载插入符号位置

通过JavaScript在文本区域中保存和加载插入符号位置,javascript,web-applications,textarea,position,caret,Javascript,Web Applications,Textarea,Position,Caret,我正在寻找一种在web应用程序的文本区域中保存和加载插入符号位置的方法,这样当用户重新打开web应用程序时,他们会自动回到离开它的位置 我看过jQuery的插件,但由于我的web应用程序不使用jQuery,我需要一些纯JavaScript的插件 此外,启动保存插入符号位置的功能的最佳方式是什么?想到的第一个方法是在每次按键时重新保存,但这似乎有点低效。我一直在考虑让应用程序通过onBeforeUnload事件保存位置,但是如果你能想出更好的方法,请分享 只需稍作修改,就可以在不使用jQuery的

我正在寻找一种在web应用程序的文本区域中保存和加载插入符号位置的方法,这样当用户重新打开web应用程序时,他们会自动回到离开它的位置

我看过jQuery的插件,但由于我的web应用程序不使用jQuery,我需要一些纯JavaScript的插件


此外,启动保存插入符号位置的功能的最佳方式是什么?想到的第一个方法是在每次按键时重新保存,但这似乎有点低效。我一直在考虑让应用程序通过onBeforeUnload事件保存位置,但是如果你能想出更好的方法,请分享

只需稍作修改,就可以在不使用jQuery的情况下使用jCaret。我看了一下jCaret源代码,它使用jQuery完成了两件事:使用jQuery选择器提供元素,以及测试浏览器是否是IE。去掉这些,你就可以开始了

更详细的说明:

  • 下载jCaret的未压缩源代码:
  • 添加
    var插入符号到顶部
  • (函数($,len,createRange,duplicate){
  • $.fn.caret=function(选项,opt2){
  • var start,end,t=this[0],browser=$.browser.msie;
    更改为
    var start,end,t=this[0],browser=/(msie)([\w.]+)/.test(navigator.userAgent);
  • 在最后一行中,删除
    jQuery,
    })(jQuery,“length”,“createRange”,“duplicate”);
  • 要使用它,您需要执行以下操作:

    caret.call([document.getElementById("myText")], options, opt2);
    

    经过进一步研究,我找到了一个使用HTML5本地存储的简单解决方案

    以下是我为保存插入符号位置而编写的脚本:

    function caretPositionSave() { 
        window.localStorage.setItem("CaretPosition", document.querySelector("#editor").selectionStart);
    };
    
    另一个用于加载它:

    function caretPositionLoad() {
        document.querySelector("#editor").focus();
        if (localStorage.CaretPosition) {
            document.querySelector("#editor").selectionStart = localStorage.CaretPosition;
        };
    };
    
    这些,结合类似的功能设置屏幕的滚动位置,似乎做得很完美