如果我有特定选项卡的 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选项卡 - 嵌套选项卡的问题 - 在初始加载时激活子选项卡