Google chrome extension Chrome扩展获取当前选项卡的URL,并基于重写URL打开新选项卡

Google chrome extension Chrome扩展获取当前选项卡的URL,并基于重写URL打开新选项卡,google-chrome-extension,Google Chrome Extension,实际上,我想将其用于更复杂的URL重写,但为了简单起见,现在我想完成一些更基本的工作。因此,如果我打开并单击我的扩展的按钮,我希望它打开一个新的选项卡 我发现了关于获取URL和打开新选项卡的不同问题,但我还没有找到任何关于两者结合的问题 这就是我现在拥有的: manifest.json: { "manifest_version": 2, "name": "Rewrite", "version": "0.1", "browser_action": { "default_

实际上,我想将其用于更复杂的URL重写,但为了简单起见,现在我想完成一些更基本的工作。因此,如果我打开并单击我的扩展的按钮,我希望它打开一个新的选项卡

我发现了关于获取URL和打开新选项卡的不同问题,但我还没有找到任何关于两者结合的问题

这就是我现在拥有的:

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 });
});
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块嵌套在chrome.tabs.query块中,反之亦然,但似乎都不起作用


对于当前版本,选项卡将打开,但URL为chrome-extension://bffolfmjagnpglbmjkgajodjlfpekaeo/[object%20Object]/出现“找不到网页”错误的图像。

事实上,我想我找到了答案。如果我在background.js中的选项卡[0]后添加“.url”,似乎可以正常工作:

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 });
});
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 });
    });
});
这不是“看起来更干净”,这是唯一正确的方法。否则,
currentURL
将永远不会更新。只有“更干净的外观”选项有效:)