我想存储一些内部 Javascript 对象,例如 Range,但我还没有找到保存它的方法。保存它的最佳方法是什么?我想序列化它,但我在网上没有找到任何东西。
有没有图书馆可以帮助做到这一点?jQuery?
我想存储一些内部 Javascript 对象,例如 Range,但我还没有找到保存它的方法。保存它的最佳方法是什么?我想序列化它,但我在网上没有找到任何东西。
有没有图书馆可以帮助做到这一点?jQuery?
如果具体是 Ranges,则将范围保存为相对对象,然后将其转换为简单的字符串等价物,
例如
var sel = window.getSelection();
if ( sel && sel.rangeCount > 0 ) {
var range = window.getSelection().getRangeAt(0);
var sC = range.startContainer, eC = range.endContainer;
var A = [];
while (sC !== editor && sC) {
A.push(getNodeIndex(sC));
sC = sC.parentNode;
}
var B = [];
while (eC && eC !== editor) {
B.push(getNodeIndex(eC));
eC = eC.parentNode;
}
if ( B.length==0 ) {
B=A;
eC=sC;
}
var caretPosition = {"sC": A, "sO": range.startOffset, "eC": B, "eO": range.endOffset};
如果需要,然后将其转换为字符串:
function getCP2String() {
return _caretPosition.sC+';'+_caretPosition.sO+';'+_caretPosition.eC+';'+_caretPosition.eO;
}
然后在必要时反转这个:
function doRestoreFromString(serialTx) {
caretPosition.sC=serialTx.split(';')[0].split(',');
_caretPosition.sO=serialTx.split(';')[1].split(',');
_caretPosition.eC=serialTx.split(';')[2].split(',');
_caretPosition.eO=serialTx.split(';')[3].split(',');
console.log('sC='+_caretPosition.sC);
console.log('sO='+_caretPosition.sO);
console.log('eC='+_caretPosition.eC);
console.log('eO='+_caretPosition.eO);
doRestoreRange();
}
有关完整的工作示例,请参阅https://jsfiddle.net/Abeeee/2gr1vchm/。