0

在解释问题之前,我想解释一下我的主要目标(如果有比我的方法更好的方法):

我有可用的文档元素,理想情况下我想获得一个浏览器元素,以便它唯一地标识一个选项卡。在我以前的方法中,我使用

gBrowser.getBrowserForDocument(doc);

这返回的浏览器确实对选项卡来说是唯一的(从某种意义上说,存储在其中的属性会跨页面持续存在)。相反,如果我不存储浏览器元素,并且在移动到同一选项卡中的另一个页面后,我再次尝试上述命令,那么浏览器不再与以前相同(从某种意义上说,它已经丢失了所有存储的属性)。

这就是我的主要问题。我想掌握标签浏览器,我可以使用在同一个标​​签中加载的不同文档来引用它。

我读到了一个类似的功能:

gBrowser.getBrowserForTab(tab);

我有一种感觉,这可能会奏效。但同样,我无法理解从哪里可以获得参数“tab”(给定一个文档)。

注意:我正在使用 GWT 开发扩展


编辑:为了澄清问题的意图,这里是用例以及我的方法:

在我的扩展中,我对监控特定网站上的用户行为感兴趣。在某种程度上,它可以被认为是一个会话,在用户停留在同一个网站之前,它一直处于活动状态。在会话期间,我经常需要存储特定于用户行为的各种属性。“isSessionActive”中与问题有关的属性之一:“Y”或“”(空白字符串代表否)

为了使代码更优化,我没有在开始时为所有选项卡实例化浏览器。相反,我使用 onLoad 函数等待提示。: 如果访问了相关网站

一旦发生这种情况,我使用当前文档元素调用浏览器,查看它是否具有属性 isSessionActive 的非空值。如果不是,我将属性值设置为“Y”并实例化我的类,该类在此之后处理分析。

如果它的值为“Y”,我知道会话仍然处于活动状态并且我不需要初始化。

我面临的问题是,在第一次实例化之后,当我移动到同一选项卡中的另一个页面时,我希望调用 gBrowser.getBrowserforDocument(doc);

会让我之前实例化的浏览器,因为它基本上是相同的选项卡。

这没有发生。每次我得到一个新的 Browser 实例,它的属性 isSessionActive 不为“Y”(可能是因为新页面有一个新的文档元素)。因此,目前我所有的代码都会一遍又一遍地实例化,这是我不想要的。

4

1 回答 1

1

如果您只使用当前选项卡(而不是任何背景选项卡),那么您可以只使用 gBrowser.selectedTab https://developer.mozilla.org/en/XUL/tabbrowser#p-selectedTab

于 2012-06-12T23:11:39.270 回答