Chrome 使用参数重定向到 URL 的扩展

Chrome Extension to Redirect to URL with Parameter

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

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. 使用调试器 - 在 chrome://extensions 页面上单击您的扩展程序的 background page,然后切换到 Sources 面板。
  2. 获取url使用onBeforeRequest的回调参数
  3. 检查 url 是否已经修改。

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']
);