2012-06-12 35 views
0

在解释这个问题,我想解释我的主要目标(如果有比我的方法更好的方法):如何在文档已知时获取标签元素?

我提供我和理想的文件元素我希望得到一个浏览器元素等它唯一地标识了一个标签。在我以前的方法,我用

gBrowser.getBrowserForDocument(doc); 

这回这确实是唯一的选项卡浏览器(在属性存储在其中的意义上跨页持久化)。 如果我不存储浏览器元素,并且在移动到另一个页面在同一个选项卡之后,我再次尝试上述命令,那么浏览器不再像以前一样(从它的意义上说失去了所有存储的属性)。

这是我的主要问题。我想要了解我能够使用在同一个选项卡中加载的不同文档引用的选项卡浏览器。

我读到了类似的功能:

gBrowser.getBrowserForTab(tab); 

我有一种感觉,这可能会奏效。但是,再次,我无法理解我可以从哪里获得参数“选项卡”(给定文档)。

注:我使用GWT的分机的发展


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

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

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

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

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

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

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

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

+0

我删除了我的答案 - 我误解你的问题。 'gBrowser.getBrowserForDocument(doc)'正确地为我返回''元素,如果用户导航到不同的页面,那么元素不会改变。所以问题必须与您将数据附加到浏览器元素的方式一致。你怎么做呢? –

+0

@WladimirPalant我已经更新了解释我的场景的问题。此外,我使用GWT的方法browser.setAttribute(String key,String val)将数据附加到浏览器。浏览器元素确实会响应browser.getAttribute(string key)。但正如在编辑中所解释的,我的主要问题是我无法再次获得正确的浏览器元素(给定一个文档) –

+0

仔细检查DOM Inspector以查看浏览器元素是否仍具有新内容页面加载时的属性。 – Yansky

回答

相关问题