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

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

【问题讨论】:

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

标签: javascript html google-chrome google-chrome-extension


【解决方案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 到选项卡中。这有点棘手,但你会明白的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多