5 javascript serialization range
我想存储一些内部 Javascript 对象,例如 Range,但我还没有找到保存它的方法。保存它的最佳方法是什么?我想将其连载,但我在网上没有找到任何内容。
有没有一个图书馆可以帮助做到这一点?jquery?
如果它是特定的范围,则将范围保存为相对对象,然后将其转换为简单的字符串等效项,
例如
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};
Run Code Online (Sandbox Code Playgroud)
然后根据需要将其转换为字符串:
function getCP2String() {
return _caretPosition.sC+';'+_caretPosition.sO+';'+_caretPosition.eC+';'+_caretPosition.eO;
}
Run Code Online (Sandbox Code Playgroud)
然后在必要时反转此操作:
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();
}
Run Code Online (Sandbox Code Playgroud)
有关完整的工作示例,请参阅https://jsfiddle.net/Abeeee/2gr1vchm/ 。