在重定向上添加了两次参数

时间:2014-06-02 19:40:20

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

我正在构建一个Chrome扩展程序,将用户重定向到特定的google.XX,并在网址末尾添加参数。

扩展程序运行良好,但我的参数添加了两次。它仍在工作,但我希望代码尽可能干净。

这是脚本:

background.js

var HOST = null;
var parameters = null;
var icon = null;

function handler(details) {
  if (HOST != null) {
    return {redirectUrl: HOST + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1] + parameters};
  } else {
    return {}; // do nothing
  }
}

// Do this at the top level
chrome.webRequest.onBeforeRequest.addListener(handler,{
        urls: [
            "*://www.google.com/search*",
            "*://www.google.ie/search*",
            "*://www.google.it/search*",
            "*://www.google.es/search*",
            "*://www.google.fr/search*",
            "*://www.google.nl/search*",
            "*://www.google.be/search*",
            "*://www.google.co.uk/search*",
            "*://www.google.de/search*",
        ],
        types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
    },
    ["blocking"]);

所以最后,我会在我的网址栏中找到:newHost / **** + param + param

我猜重定向导致了这种情况。但我不知道如何解决它。

1 个答案:

答案 0 :(得分:2)

您可以在追加参数之前检查参数是否存在。这样的事情应该有效。

function handler(details) {
  var url = details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1];
  if (HOST != null && url.indexOf(parameters) === -1) {
    return {redirectUrl: HOST + url + parameters};
  } else {
    return {}; // do nothing
  }
}