如何让xul的<browser>拥有自己的个人资料?</browser>

时间:2014-04-22 23:29:14

标签: firefox-addon xul xpcom xulrunner

我在<browser>中使用了两个xul,每个<browser>应使用不同的配置文件。两者都在导航同一个站点(它是一个webapp),但他们应该单独处理他们的会话。目前,如果我在其中一个中设置了一个cookie,它也可以在第二个{{1}}上使用。有没有办法让他们完全独立?

1 个答案:

答案 0 :(得分:1)

<browser>s和网络内容大多是独立的。即:有一个cookie服务和一个HTTP“服务”使用cookie服务...或者如果您愿意,可以使用一个配置文件。 您无法在同一进程中运行两个配置文件...

嗯,实际上现在有两组cookie(和缓存等 - 或者一般用户状态)。常规的和普通的浏览器。如果您真的只是在两个不同的<browser>s而不是n>=2之后,那么将<browser>s中的一个切换到隐私浏览模式可能就足以满足您的使用需求。 通常,应该可以设置PrivateBrowsingUtils.privacyContextFromWindow(window).usePrivateBrowsing = true;,其中window.contentWindow的{​​{1}}。使用<browser>首先在窗口中加载实用程序代码模块;) 有可能从这个领域中的伟大Private Tab附加组件中获得一些灵感,因为这实际上就是该附加组件的作用:将Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm")置于不同的私有区域浏览模式,因此用户状态进入同一窗口。

Update 1 :私有会话基本上是一个常规会话,分别跟踪cookie,localstorage,缓存等,但只保存在内存中,永远不会写入磁盘。因此,一旦应用程序退出,它就会消失。此外,一旦最后一个私有窗口上下文关闭(好,与之关联的<browser>s),"last-pb-context-exited" notification will be sent,也会导致私有会话被删除。如果你遇到私有会话过早消失的问题,只需在另一个地方保留另一个(隐藏的)私有nsIDocShell

如果这还不够,那么考虑运行两个单独的Firefox实例。 <browser>-profile <path>(并行运行会话)交换机是您的朋友。

如果您只是在使用Cookie之后,manipulate the cookies requests也可以-no-remote来自getting the <browser> first {{3}},然后根据需要添加<browser>s标题。当然,这会影响网站可能使用的其他内容,例如Cookielocalstorage,因此可能还不够。

如果以上所有内容对你都不起作用,那么我猜你运气不好......

将来有可能使用IndexedDB(多进程Firefox)做更多花哨的东西,但是在一个应用程序实例中使用两个配置文件的IIRC不支持或不可能使用它或计划(从Nightly判断) ,已经有实验e10s支持。