Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当文档已知时,如何获取选项卡元素?_Javascript_Gwt_Firefox Addon_Jsni - Fatal编程技术网

Javascript 当文档已知时,如何获取选项卡元素?

Javascript 当文档已知时,如何获取选项卡元素?,javascript,gwt,firefox-addon,jsni,Javascript,Gwt,Firefox Addon,Jsni,在解释问题之前,我想解释我的主要目标(如果有比我的方法更好的方法): 我可以使用document元素,理想情况下,我希望获得一个浏览器元素,以便它唯一地标识选项卡。在我以前的方法中,我使用了 gBrowser.getBrowserForDocument(doc); 这返回的浏览器确实是选项卡所独有的(从存储在其中的属性跨页面持久化的意义上讲)。 相反,如果我不存储browser元素,并且在移动到同一选项卡中的另一个页面后,我再次尝试上述命令,那么浏览器将不再是以前的浏览器(从失去所有存储属性的

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

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

gBrowser.getBrowserForDocument(doc);
这返回的浏览器确实是选项卡所独有的(从存储在其中的属性跨页面持久化的意义上讲)。 相反,如果我不存储browser元素,并且在移动到同一选项卡中的另一个页面后,我再次尝试上述命令,那么浏览器将不再是以前的浏览器(从失去所有存储属性的意义上讲)

这就是我的主要问题。我想使用在同一个选项卡中加载的不同文档来获得选项卡浏览器,我可以使用它来参考

我读到一个类似的函数:

gBrowser.getBrowserForTab(tab);
我觉得这可能有用。但同样,我无法理解从何处获取参数“tab”(给定文档)

注意:我使用GWT开发扩展


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

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

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

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

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

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

会让我的浏览器实例化之前,因为它基本上是相同的标签


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

如果您只使用当前选项卡(而不是任何背景选项卡),那么您可以使用gBrowser.selectedTab

我以为他有内容文档,想获得相应的选项卡。我删除了我的答案-我误解了您的问题
gBrowser.getBrowserForDocument(doc)
为我正确返回
元素,如果用户导航到其他页面,该元素不会更改。因此,问题必须与将数据附着到浏览器元素的方式有关。你是怎么做到的?@WladimirPalant我已经更新了解释我的情景的问题。此外,我使用GWT的方法browser.setAttribute(String key,String val)将数据附加到浏览器;browser元素不响应browser.getAttribute(字符串键)。但正如在edit中所解释的,我的主要问题是,我无法再次获得正确的浏览器元素(给定一个doc),请与DOM检查器仔细检查,以查看浏览器元素在新内容页加载时是否仍然具有该属性。