javascript - Chrome 扩展程序可重定向到带参数的 URL

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

我正在尝试创建一个 Chrome 扩展程序,如果 URL 与给定模式匹配 (*://*.mydomain.com/s/*)。下面是我拥有的 list 文件和后台脚本,但我无法让它工作。我做错了什么?

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

}

背景.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 页面上点击扩展程序的背景页面,然后切换到Sources 面板。
  2. 要获取 URL,请使用 onBeforeRequest的回调参数
  3. 检查网址是否已修改。

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

关于javascript - Chrome 扩展程序可重定向到带参数的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568721/

相关文章:

javascript - 哪里指定文档中有一个 "onXYZ"?

javascript - 使用 getPointAtLength() 将圆添加到路径已移动

javascript - 在 vuejs 中,输入事件触发在列表中不起作用

google-chrome - 使用 ECMAScript 6

javascript - 通过ajax(chrome)在vanilla js中以编程方式触发文件输入点击

javascript - 为什么 jQuery 在 google chrome 扩展的浏览器操作弹出窗口中不起作用?

javascript - 为什么无限递归异步函数不会导致堆栈溢出?

javascript - webkit RequestAnimationFrame 与 setInterval 的平滑度较差

google-chrome-extension - 如何在内容脚本的 chrome 扩展中设置徽章文本?

google-chrome-extension - 将事件监听器添加到 Chrome 扩展中的仅 1 个选项卡