【问题标题】:Chrome Extension to fetch URL of current tab and open new tab based on re-writing URLChrome 扩展以获取当前选项卡的 URL 并基于重写 URL 打开新选项卡
【发布时间】:2014-11-27 05:52:44
【问题描述】:

我实际上想通过更复杂的 URL 重写来使用它,但为了简单起见,我现在想完成一些更基本的事情。因此,如果我在 https://www.google.com 上并单击扩展程序的按钮,我希望它打开一个带有 http://www.google.com/images 的新标签

我发现了有关获取 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 });
});

我尝试了各种形式的这种方法,例如将 chrome.browserAction.onClicked.addListener 块嵌套在 chrome.tabs.query 块内,反之亦然,但似乎都不起作用。

在当前版本中,标签页打开,但 URL 是 chrome-extension://bffolfmjagnpglbmjkgajodjlfpekaeo/[object%20Object]/images 并出现“找不到网页”错误。

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    实际上,我想我想通了。如果我在 background.js 中的 tabs[0] 之后添加 '.url' 似乎可以工作:

    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 永远不会更新。
    • “更清洁的外观”替代方案是唯一可行的方案 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多