打开弹出窗口时如何获取当前标签页面[没有标签权限]

时间:2014-03-13 13:53:47

标签: google-chrome-extension

我在chrome 31.0.1650.57上进行了browserAction扩展测试。我想在用户点击扩展图标时获取活动标签网址,保存并稍后使用。

使用标签权限时,我可以这样做。但是这个权限有很大的权力(我不需要),用户也抱怨这个。

我按照文章切换到 activeTab 权限http://developer.chrome.com/extensions/activeTab,但只有在没有弹出窗口时才有效。正如您在 make_page_red 示例中看到的那样。

chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log("★ tab.url", tab.url);
});

您可以通过更改 make_page_red 示例清单文件进行检查,以添加如下默认弹出窗口:

{
  "name": "Page Redder",
  "description": "Make the current page red",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red",
    "default_popup": "popup.html"  ←-------------------

  },
  "manifest_version": 2
}

现在因为我有一个默认弹出窗口,所以不再调用browserAction.onClicked监听器。

如何获取当前标签页并仍然打开弹出窗口?

由于

1 个答案:

答案 0 :(得分:7)

不再调用browserAction.onClicked(如您所述),所以请跳过:

popup.js

chrome.tabs.query({active:true,currentWindow:true},function(tabArray){
    console.log(tabArray[0].url);
});

当然,popup.html加载popup.jsscript标记。 (而且我不确定你的后台脚本是做什么的。)

编辑:

除了上述内容,我的扩展程序还有另外两个文件。 manifest.json已从您的副本中复制,但已删除背景部分。唯一的另一个文件是popup.html(来自内存,所以请耐心等待):

<html><body><script type="text/javascript" src="popup.js"></script></body></html>

要查看控制台,我单击浏览器操作,这会打开一个50像素的方形窗口。右键单击它,&#34;检查元素&#34;,然后单击控制台以查看URL。