gpt4 book ai didi

javascript - 是否可以序列化/反序列化 dojo 小部件对象?

转载 作者:行者123 更新时间:2023-11-30 06:05:32 28 4
gpt4 key购买 nike

有人知道是否可以将 dojo 小部件 (dijit) 对象序列化/反序列化为字符串或某种可以跨浏览器 session 持久化的表示形式吗?

我的场景:我有一个包含各种 dijits 的网页,我希望能够拍摄“快照”并在新的浏览器 session 中恢复,以便所有内容都以完全相同的状态恢复。为了做到这一点,我相信我需要序列化/恢复页面的 DOM 树以及 dijit 对象。我已经能够序列化 DOM 树,目前正在通过替换页面 HTML 节点的内容来恢复它。当页面的 DOM 恢复时,所有 dijit 都不起作用 - 它们被正确呈现,但您不能单击它们中的任何一个。我相信这是因为 dojo 解析器在页面首次加载时已经通过 DOM 运行,并且替换整个 HTML DOM 元素会破坏该页面的 dijit 注册表中的所有 dijit。这意味着 dijit 类必须重新 -实例化。

理想情况下,我希望能够做的是当我拍摄“快照”时,将页面的 dijit.registry 中包含的每个 dijit 对象序列化为一个文件,并在恢复 session 时将其序列化为重新构造那些 dijit 对象并将它们添加回 dijit 注册表。

类似于:dijit.registry.forEach(函数(小部件){ //保存小部件对象以便它可以在新的浏览器实例中恢复?});

有没有人试过这个或者知道是否可以不编写自定义序列化程序?

最佳答案

我不确定我是否同意您使用的技术。更好的方案是简单地序列化每个 dijit 的数据状态。我知道这会增加工作量,但您正试图保留数据的状态,将 UI 随行似乎保留了不必要的信息。

也就是说,可以独立于页面加载调用 dojo 解析器。你要找的是

dojo.parser.parse();

在重新填充 innerHTML 后运行它应该重新解析并重新创建 dijits请参阅此页面以获取完整引用:http://docs.dojocampus.org/dojo/parser

关于javascript - 是否可以序列化/反序列化 dojo 小部件对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109683/

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