Chrome扩展程序重定向到带参数的网址

时间:2015-07-22 16:21:14

标签: javascript google-chrome google-chrome-extension content-script

我尝试创建Chrome扩展程序,如果网址与给定模式(*://*.mydomain.com/s/*)匹配,则会在网址末尾添加参数。下面是我的清单文件和后台脚本,但我无法使其正常工作。我做错了什么?

的manifest.json:

{
  "manifest_version": 2,
  "name": "Search Grid View",
  "version": "0.1",
  "description": "Changes MyDomain.com search to grid view by default",

  "background": {
     "scripts": ["background.js"]
  },

  "permissions": [
    "tabs",
    "webRequest",
    "*://*.mydomain.com/s/*",
    "webRequestBlocking"
  ]

}

background.js:

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {         
    var currentUrl = tabs[0].url;
    var newUrl = currentUrl + "&style=gridview"
    return { redirectUrl: newUrl};
  },
  {
    urls: [
      '*://*.mydomain.com/s/*'
    ],
    types: ['main_frame']
  },
  ['blocking']);

提前感谢任何建议!

1 个答案:

答案 0 :(得分:3)

  1. 使用调试程序 - 在chrome:// extensions页面上点击您的扩展程序background page,然后切换到Sources面板。
  2. 要获取网址,请使用onBeforeRequest的回调参数
  3. 检查网址是否已被修改。
  4. chrome.webRequest.onBeforeRequest.addListener(
        function(details) {
            return {
                redirectUrl: details.url + 
                    (details.url.indexOf("?") == -1 ? "?" : "") +
                    (details.url.indexOf("&style=gridview") == -1 ? "&style=gridview" : "")
            };
        },
        {urls: ['*://*.mydomain.com/s/*'], types: ['main_frame']},
        ['blocking']
    );