Je travaille sur une extension Chrome en utilisant l'API JavaScript que je suis en train de rediriger l'URL lorsque ses matchs avec motif d'URL WebRequestChrome.webrequest.onBeforeRequest qui se fait appeler plusieurs fois
how chrome.webrequest.onebforerequest calling itsself multiple times
backgorund.js
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
var host="https://api.answerme.com/2.2/questions/345797";
var x = new XMLHttpRequest();
x.open('GET',host,false);
x.onload = function() {
// this function gives me URL and store into "redirectAnswerUrl" global variable (working fine)
setRedirectedToAnswer(x.responseText);
};
x.send();
//this working fine output:-www.answerme.com/quetion/78784#45545
alert("redirectAnswerUrl"+redirectAnswerUrl);
if(redirectAnswerUrl!=""){
//but this redirectAnswerUrl has same pattern of default urls that is above output and manifest url
return {redirectUrl: redirectAnswerUrl}
}
},
{
//setting url which we gonna match during first load
urls: [
"*://answerme.com/questions/*",
"*://www.answerme.com/questions/*"
]
},
["blocking"]
);
manifest.json
{
"name": "Demo",
"description": "Demo",
"version": "0.1",
"manifest_version": 2,
"browser_action": {
"default_icon": "logo.png",
"default_popup": "window.html"
},
"background": {
"scripts": ["background.js"]
},
"permissions": [
"activeTab", "tabs", "webRequest",
"*://answerme.com/questions/*",
"*://www.answerme.com/questions/*"
"webRequestBlocking", "storage"
],
"icons": {
"16": "logo.png",
"128": "logo.png"
}
}
Problème: modèle url Même qui est en cours de vérification sur WebRequest qui est l'API ouput url a "www.answerme.com/quetion/78878 # 787878" et WebRequest url a "www.answerme.com/quetion/SearchQuery »
Dans ce cas, quand nous www.answerme.com/questions/searchquery
la page sera redirigé vers la http://www.answerme.com/questions/7847859#748555
, mais le problème est: le modèle que j'utiliser pour vérifier l'URL a *
pour indiquer l'URL peut commencer par une protocole et ses premiers attributs commencent par quetions
. Cela correspond à l'URL de redirection, http://www.answerme.com/questions/7847859#7848488
, de sorte que cela devient interbloqué (redirigé à plusieurs reprises). Je reçois à nouveau la même requête de modèle d'URL (redirect url= www.asswerme.com/quetion/7878#7878 and webrequest url on manifest file has www.asswerme.com/quetion/*
), donc j'ai décidé de vérifier que l'URL ne se termine pas par un nombre (manifeste de webrequest), de sorte que je puisse facilement les rediriger vers http://www.answerme.com/questions/7847859#14524
sans aucune ambiguïté.
S'il vous plaît [modifier] votre question à clarifier. Veuillez spécifier * exactement * les URL que vous tentez de rediriger. Par exemple, voulez-vous rediriger les URL ** all ** '*: // *. Example.com/add/*' à l'exception de 'http: // www.example.com/add/7847859' à' http:// www.example.com/add/7847859'? Si c'est le cas, il suffit de tester l'URL pour voir si elle contient: 'if (details.url.indexOf ('http://www.example.com/add/7847859')! == 0) {return {redirectUrl: 'http://www.example.com/add/7847859'};} ' – Makyen
oui .. je veux que l'url se termine par numéro # numéro 121454 # 25544 parce que chaque fois que je reçois une réponse d'api je reçois cette URL dans cet exemple de format .com/add/4545454 # 44555 donc je veux exactement le même motif –
J'ai mis à jour la question –