Chrome扩展程序api为当前网址添加参数

wic*_*lls 2 javascript api google-chrome-extension

我正在研究一个"简单"扩展,将参数添加到当前url的末尾.我已设法获取当前网址,但无法执行重定向以使用添加的参数刷新页面.我的代码如下:

的manifest.json

{
    "name": "Something",
    "version": "1.0",
    "manifest_version": 2,
    "description": "Woohoo",
    "browser_action": {
        "default_icon": "icon.png"
    },

    "background": {
      "persistent": false,
      "scripts": ["bgscript.js"]
    },

    "permissions": [
      "tabs"
    ]
}
Run Code Online (Sandbox Code Playgroud)

bgscript.js

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
        var currentUrl = tabs[0].url;

        chrome.extension.sendRequest({redirect: currentUrl + "?customparam=1"});
    });
});
Run Code Online (Sandbox Code Playgroud)

任何人都有关于如何执行这样的重定向的任何想法?

gka*_*pak 5

单击浏览器操作时的活动选项卡将作为参数传递给onClicked侦听器回调.

此外,正如您的评论中所提到的,需要稍加注意将自定义查询参数附加到正确的位置,并在其前面加上正确的符号.具体而言,自定义参数应放置之前的散列(如果有的话)和路径名(如果有的话)之后,但是如果有更多的查询参数呈现它应该与前缀&代替?.

var customParam = encodeURI('customparam=1');
chrome.browserAction.onClicked.addListener(function (tab) {
  var url = tab.url;
  var hashStart = (url.indexOf('#') === -1) ? url.length : url.indexOf('#');
  var querySymbol = (url.indexOf('?') === -1) ? '?' : '&';
  var newUrl = url.substring(0, hashStart) + querySymbol + customParam +
               url.substring(hashStart);

  chrome.tabs.update(tab.id, {url: newUrl});
});
Run Code Online (Sandbox Code Playgroud)