通过JavaScript在文本区域中保存和加载插入符号位置
我正在寻找一种在web应用程序的文本区域中保存和加载插入符号位置的方法,这样当用户重新打开web应用程序时,他们会自动回到离开它的位置 我看过jQuery的插件,但由于我的web应用程序不使用jQuery,我需要一些纯JavaScript的插件通过JavaScript在文本区域中保存和加载插入符号位置,javascript,web-applications,textarea,position,caret,Javascript,Web Applications,Textarea,Position,Caret,我正在寻找一种在web应用程序的文本区域中保存和加载插入符号位置的方法,这样当用户重新打开web应用程序时,他们会自动回到离开它的位置 我看过jQuery的插件,但由于我的web应用程序不使用jQuery,我需要一些纯JavaScript的插件 此外,启动保存插入符号位置的功能的最佳方式是什么?想到的第一个方法是在每次按键时重新保存,但这似乎有点低效。我一直在考虑让应用程序通过onBeforeUnload事件保存位置,但是如果你能想出更好的方法,请分享 只需稍作修改,就可以在不使用jQuery的
此外,启动保存插入符号位置的功能的最佳方式是什么?想到的第一个方法是在每次按键时重新保存,但这似乎有点低效。我一直在考虑让应用程序通过onBeforeUnload事件保存位置,但是如果你能想出更好的方法,请分享 只需稍作修改,就可以在不使用jQuery的情况下使用jCaret。我看了一下jCaret源代码,它使用jQuery完成了两件事:使用jQuery选择器提供元素,以及测试浏览器是否是IE。去掉这些,你就可以开始了 更详细的说明:
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;
};
};
这些,结合类似的功能设置屏幕的滚动位置,似乎做得很完美