我正在构建一个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
我猜重定向导致了这种情况。但我不知道如何解决它。
答案 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
}
}