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

red*_*hka 1 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监听器.

我怎样才能获得当前标签页面并仍然弹出我的弹出窗口?

谢谢

Tee*_*emm 7

不再调用browserAction.onClicked(正如您所说),所以只需跳过:

popup.js:

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

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

编辑:

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

<html><body><script type="text/javascript" src="popup.js"></script></body></html>
Run Code Online (Sandbox Code Playgroud)

要查看控制台,我单击浏览器操作,它会显示一个50像素的方形窗口.右键单击"检查元素",然后单击控制台以查看URL.

  • 我正在使用make_page_red示例.您的代码不起作用.它返回undefined.你为什么还不确定background.js?它做得非常荒谬. (2认同)