![](/img/trans.png)
[英]How to identify tab close event for browser element [XUL/firefox]
[英]How can I clone a <browser> element in Firefox using XUL?
我正在开发一个firefox扩展,我需要在其中保存任意网页的状态,以便以后能够还原该网页。 奇怪的是,我需要还原页面的整个状态,包括所有javascript变量的状态。 “保存”可以在内存中完成,不需要序列化。
那么,是否有一种方法可以完全克隆browser
元素,从而使其从与原始元素相同的执行点开始运行?
如果没有,那么将其添加到firefox(使用C ++)需要花费多少精力,我将开始查看哪些文件和文档?
不,没有一种方法可以完全满足您的需求。 即使是内置的会话还原也只能还原表单字段(和其他一些选定的内容),而不还原完整的JS和本机对象状态。
自己实现这样的操作是不可行的(并且也是一项艰巨的任务):
uneval()
大多数js对象,但这将丢失类型信息,并且您将仅获取源,而不获取任何内部状态(通过闭包考虑“隐藏”状态)。 诸如window
或document
类的本机对象需要进行一些特殊处理,并且在没有某些C ++级别的“反射”的情况下,获取内部状态并非总是可能的。 关于封闭的“隐藏”状态:在下面的示例中,我不知道可靠地获取counter
的内部状态的方法,更不用说稍后对其进行还原,而又不会获得与平台相关的完整内存转储的低级别信息了。
var count = (function() {
var counter = 0;
return function() { return ++counter; };
})();
count();
count();
我猜想您可以遍历所有对象的属性并将它们保存在某处,但是要保留例如绑定函数的上下文将很困难。 也许您可以利用会话存储区吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.