我在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监听器。
如何获取当前标签页并仍然打开弹出窗口?
由于
答案 0 :(得分:7)
不再调用browserAction.onClicked(如您所述),所以请跳过:
popup.js
:
chrome.tabs.query({active:true,currentWindow:true},function(tabArray){
console.log(tabArray[0].url);
});
当然,popup.html
加载popup.js
加script
标记。 (而且我不确定你的后台脚本是做什么的。)
编辑:
除了上述内容,我的扩展程序还有另外两个文件。 manifest.json
已从您的副本中复制,但已删除背景部分。唯一的另一个文件是popup.html
(来自内存,所以请耐心等待):
<html><body><script type="text/javascript" src="popup.js"></script></body></html>
要查看控制台,我单击浏览器操作,这会打开一个50像素的方形窗口。右键单击它,&#34;检查元素&#34;,然后单击控制台以查看URL。