gpt4 book ai didi

javascript - 如何使用 XUL 在 Firefox 中克隆 元素?

转载 作者:行者123 更新时间:2023-11-30 05:41:37 24 4
gpt4 key购买 nike

我正在开发一个 firefox 扩展,我需要在其中保存任意网页的状态,以便以后能够恢复该网页。怪癖是我需要恢复页面的整个状态,包括所有 javascript 变量的状态。 “保存”可以在内存中完成,不需要序列化。

那么,有没有办法精确地克隆一个 browser 元素,以便它从与原始元素当前所在的相同执行点开始运行?

如果没有,将其添加到 firefox(使用 C++)需要付出多少努力,我将开始查看哪些文件和文档?

最佳答案

不,没有办法完全按照您的意愿行事。即使是 built-in session restore只会恢复表单字段(和其他一些选定的东西),但不会恢复完整的 JS 和 native 对象状态。

自己实现这样的东西是不可行的(而且也是一项艰巨的任务):

  • 您可以 uneval() 大多数 js 对象,但这会丢失类型信息,您只会获得源代码,而不是任何内部状态(想想通过闭包的“隐藏”状态)。 windowdocument 等 native 对象需要一些特殊处理,如果没有一些 C++ 级别的“反射”,获取内部状态并不总是可能的。
  • 您可能会以新的方式使用调试器 API 获得大量实际状态,但我看不出有任何方法可以在以后实际恢复它。而且“很多”仍然不等于“全部”。

关于关闭的“隐藏”状态:在下面的示例中,我不知道如何可靠地获取 counter 的内部状态,更不用说稍后恢复它,而不会像依赖于平台的完整内存转储那样低级。

var count = (function() {
var counter = 0;
return function() { return ++counter; };
})();
count();
count();

关于javascript - 如何使用 XUL 在 Firefox 中克隆 <browser> 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20508085/

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