如果我有特定选项卡的 tabId,如何获取特定选项卡的窗口对象?

Posted

技术标签:

【中文标题】如果我有特定选项卡的 tabId,如何获取特定选项卡的窗口对象?【英文标题】:How do I get the window object for a specific tab if I have that tab's tabId? 【发布时间】:2012-06-05 00:48:06 【问题描述】:

我有一个标签的 tabId。如何获取它的窗口对象?

【问题讨论】:

你能说出你想要达到的目标吗?因为可能有不同的方法来完成它? 我有一个标签的 tabId。如何获取它的窗口对象? 【参考方案1】:

要从 tabId 获取 DOM 窗口对象,您应该在该选项卡中插入内容脚本:

chrome.tabs.executeScript(tabId, code:'var w = window; console.log(w);');

https://developer.chrome.com/extensions/tabs#method-executeScript

也许您需要与您的后台页面进行通信:

https://developer.chrome.com/extensions/content_scripts#host-page-communication

【讨论】:

这毫无意义。这只会将窗口对象记录到控制台并将其复制到另一个变量。它不返回任何东西。 除非您添加回调,否则此答案完全没用。像这样: chrome.tabs.executeScript( null, code:"var w = window; w", function(results) console.log(results[0]); );但是,出于安全考虑,许多窗口项不可用,因此您仍然必须使用内容脚本/消息传递 api 才能执行任何功能。【参考方案2】:

在 chrome 扩展中看到的窗口对象:

 chrome.tabs.get(YOUR_TAB_ID_HERE, function(tab)
      chrome.windows.get(tab.windowId, function(win) 
           console.log(win); // THIS IS THE WINDOW OBJECT
      );
 );

但如果您需要特定选项卡中的 javascript 运行时,则需要使用内容脚本,这里有更好的解释:

http://code.google.com/chrome/extensions/content_scripts.html

【讨论】:

等等,“win”是视图的窗口对象,还是包含多个选项卡的窗口的窗口对象?我正在尝试获取视图的窗口对象。 win 是包含选项卡的窗口。要获得另一个,您需要内容脚本,因此请阅读我给您的链接。您必须从扩展中注入一些 javascript 到选项卡中。这有点棘手,但你会明白的。

以上是关于如果我有特定选项卡的 tabId,如何获取特定选项卡的窗口对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pyside2 的 QTabWidget 中更改特定选项卡的字体?

JQuery选项卡 - 嵌套选项卡的问题 - 在初始加载时激活子选项卡

p:tabView:直接链接到选项卡

如何从 JavaScript 函数导航到 <p:tabView> 的特定选项卡

如何将具有特定字符串的excel表读入R

如何链接到页面并使用 Rails 激活特定选项卡