【发布时间】:2011-02-24 19:50:40
【问题描述】:
有人知道是否可以将 dojo 小部件 (dijit) 对象序列化/反序列化为字符串或可以跨浏览器会话持久化的某种表示形式?
我的场景: 我有一个包含各种 dijit 的网页,我希望能够拍摄“快照”并在新的浏览器会话中恢复,以便将所有内容恢复到完全相同的状态。 为了做到这一点,我相信我需要序列化/恢复页面的 DOM 树以及 dijit 对象。我已经能够序列化 DOM 树,目前正在通过替换页面 HTML 节点的内容来恢复它。恢复页面的 DOM 后,所有 dijit 都不起作用 - 它们被正确呈现,但您无法单击其中任何一个。我相信这是因为当页面第一次加载时,dojo 解析器已经通过 DOM 运行,并且替换整个 HTML DOM 元素会破坏该页面的 dijit 注册表中的所有 dijit。这意味着必须重新设置 dijit 类实例化。
理想情况下,当我拍摄“快照”时,将页面的 dijit.registry 中包含的每个 dijit 对象序列化为文件,并在会话恢复时,重新构造这些 dijit 对象并将它们添加回 dijit 注册表。
类似: dijit.registry.forEach(函数(小部件){ // 保存小部件对象,以便可以在新的浏览器实例中恢复它? });
有没有人尝试过或者知道是否可以不编写自定义序列化程序?
【问题讨论】:
标签: javascript dojo