Chrome扩展程序可获取当前标签的网址,并根据重写网址打开新标签页

时间:2014-11-27 05:52:45

标签: google-chrome-extension

我实际上想要使用更复杂的URL重写,但为了简单起见,我现在想要完成一些更基本的东西。因此,如果我在https://www.google.com并点击了我的扩展程序的按钮,我希望它打开一个包含http://www.google.com/images

的新标签页

我发现了有关获取网址和打开新标签的单独问题,但我找不到任何关于合并这两个标题的内容。

这就是我现在所拥有的:

的manifest.json:

{
  "manifest_version": 2,

  "name": "Rewrite",
  "version": "0.1",

  "browser_action": {
    "default_icon": "icon.png"
  },
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "permissions": ["https://*/*", "http://*/*", "tabs"]
}

background.js:

var currentURL;

chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
  currentURL = tabs[0];
});

chrome.browserAction.onClicked.addListener(function(activeTab) {
    var newURL = currentURL + "/images";
    chrome.tabs.create({ url: newURL });
});

我尝试了各种形式,例如将chrome.browserAction.onClicked.addListener块嵌套在chrome.tabs.query块内,反之亦然,但似乎都没有。

使用当前版本,标签会打开,但网址为chrome-extension:// bffolfmjagnpglbmjkgajodjlfpekaeo / [object%20Object] /带有“找不到网页”的图片错误。

1 个答案:

答案 0 :(得分:0)

实际上,我想我已经明白了。如果我添加' .url'它似乎有效。在background.js中的标签[0]之后:

var currentURL;

chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
  currentURL = tabs[0].url;
});

chrome.browserAction.onClicked.addListener(function(activeTab) {
    var newURL = currentURL + "/images";
    chrome.tabs.create({ url: newURL });
});

虽然看起来更干净:

chrome.browserAction.onClicked.addListener(function(activeTab) {
    chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
        var newURL = tabs[0].url + "/images";
        chrome.tabs.create({ url: newURL });
    });
});