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

时间:2014-01-17 17:39:12

标签: javascript api google-chrome-extension

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

的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"
    ]
}

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"});
    });
});

有人对如何执行这样的重定向有任何想法吗?

2 个答案:

答案 0 :(得分: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});
});

答案 1 :(得分:0)

没关系,明白了:

<强> bgscript.js

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
        var currentUrl = tabs[0].url;
        var newUrl = currentUrl + "?customparam=1"
        chrome.tabs.update({url:newUrl});
    });
});