gpt4 book ai didi

javascript - 序列化内部 Javascript 对象(如 Range)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:28 25 4
gpt4 key购买 nike

我想存储一些内部 Javascript 对象,例如 Range,但我还没有找到保存它的方法。保存它的最佳方法是什么?我想连载它,但我没有在网上找到任何东西。

是否有图书馆可以帮助做到这一点? jquery?

最佳答案

如果具体是Ranges,那么将range保存为一个相对对象,然后将其转化为一个简单的字符串等价物,

例如

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/一个完整的工作示例。

关于javascript - 序列化内部 Javascript 对象(如 Range),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/965968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com