Comment puis-je rediriger chrome dans une extension lorsque je visite une URL donnée?
Par exemple: lorsque je visite http://yahoo.com/
Je veux qu'il redirige vers http://google.com/
Il existe de nombreuses options, l'une plus compliquée que l'autre.
webRequest
, en particulier l'événement onBeforeRequest
. (Encore mieux, la prochaine declarativeWebRequest
API ).location.replace('http://example.com')
dans une page.tabs
. Utilisez l'événement onUpdated
pour détecter quand une page a changé d'emplacement, et chrome.tabs.update
pour changer son URL. Évitez cependant une boucle infinie!Le premier est le meilleur, car il est activé avant même qu'une page ne soit demandée. Le second peut être activé une fois la demande satisfaite, mais avant le rendu de la page ("run_at":"document_start"
) ou après son rendu ("run_at":"document_end"
). J'ai mentionné le dernier pour être complet, mais vous ne devriez pas l'utiliser, car les autres options sont bien meilleures.
Voici un exemple utilisant l'API webRequest
, une simple extension qui me permet de parcourir les pages de la baie Pirate, même si les principaux hôtes sont supprimés par mon FAI (la liste réelle des URL est beaucoup plus longue, mais je les ont omis pour les besoins de l'exemple).
Voir modèles de correspondance pour une explication sur les formats d'URL.
manifest.json
{
"name": "The Pirate Bay",
"description": "Redirect The Pirate Bay to a different Host",
"version": "1.0",
"manifest_version": 2,
"background": {"scripts":["background.js"]},
"permissions": [
"webRequest",
"*://thepiratebay.se/*",
"*://www.thepiratebay.se/*",
"webRequestBlocking"
]
}
background.js
var Host = "http://tpb.pirateparty.org.uk";
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return {redirectUrl: Host + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1]};
},
{
urls: [
"*://piratebay.se/*",
"*://www.piratebay.se/*"
],
types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
},
["blocking"]
);
Je sais que je suis un peu en retard dans le jeu pour répondre à cette question. J'aimerais quand même répondre à cela pour les futurs lecteurs. Jettes un coup d'oeil à
Actuellement, vous pouvez configurer des règles pour
Captures d'écran pour plus de compréhension:
Il y a beaucoup de choses dans la feuille de route à couvrir en tant que demande comme
.. et beaucoup plus.
PS: J'ai créé cela. Vous pouvez donc m'en vouloir si vous ne trouvez pas cela utile :)