5

Próbuję utworzyć rozszerzenie Chrome, aby pomóc mi zrozumieć interfejs API Chrome webRequest, replikując to, co zostało zrobione z this answer, ale bez eksperymentalnej części przestrzeni nazw, która nie jest już potrzebna, ponieważ webRequest jest teraz w bagażniku Chrome.Proste przekazywanie za pomocą Google Chrome webRequest API

W mojej stronie tło mam kod:

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
function interceptRequest(request) { 
    return { redirectUrl: 'http://www.yahoo.com' } 
} 
chrome.webRequest.onBeforeRequest.addListener(interceptRequest, { urls: ['*://*.google.com/*'] }, ['blocking']); 
    </script> 
    </head><body></body> 
</html> 

W moim pliku manifestu mam:

{ 
    "name": "My Extension", 
    "version": "0.1", 
    "background_page": "background.html", 
    "permissions" : [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*/*" 
    ] 
} 

podstawie wcześniej zadawane pytanie, powinien zostać przekazany do http://www.yahoo.com kiedy dostęp https://www.google.com i moje rozszerzenie jest ładowane, jednak https://www.google.com ładuje bez żadnego efektu przekierowania. Co muszę zrobić, aby po prostu przekazać użytkownika z jednego identyfikatora URI do drugiego za pomocą interfejsu API webRequest w przeglądarce Chrome?

+0

To dziwne. Jedyne, co mogę wymyślić, to upewnić się, że nie ładujesz żadnych synchronicznych XHR ani żadnych tagów skryptów z zasobów online na stronie w tle z dokumentów Chrome. – gengkev

Odpowiedz

3

Twój wzór dopasowania adresu URL jest nieprawidłowy. Wystarczy dodać ukośnik:

{urls: ['https://www.google.com/']} 

Alternatywnie, można użyć: '*: //www.google.com/' dopasować wszystkie protokoły, „*: // www. google.com/*” dopasować poza tylko domeny, a '*: //*.google.com/*' dopasować wszystkie subdomen, protokołów i ścieżek itp

Patrz: http://code.google.com/chrome/extensions/trunk/match_patterns.html

+0

Dzięki za opinie, ale żadne z tych rozwiązań nie spowodowało przekazania przeglądarki do Yahoo. Czy widzisz coś złego w powyższym, a może coś, czego nie uwzględniłem? –

+1

Utworzono rozszerzenie z kodem i działa ono dobrze dla mnie po umieszczeniu końcowego ukośnika w polu 'urls', jak opisano w moim komentarzu powyżej. Jedyne co zauważyłem to "content_scripts" w twoim pliku manifestu ... czy masz plik 'content.js'? Nie potrzebujesz tego do tej funkcji. Czy wszystkie ścieżki są poprawne (background.html i content.js są w katalogu głównym rozszerzenia)? Owiń także znaczniki '' wokół kodu JS w background.html (zakładałem, że został on zawinięty - w końcu jest plikiem html, a nie plikiem js). – rgthree

+0

Nawet po dodaniu znaku "/" i wykluczeniu pliku content.js z pliku manifestu nie udało się uzyskać strony do przekazania podczas uzyskiwania dostępu do strony http://www.google.com. Zaktualizowałem źródło moich plików powyżej, aby było bardziej obszerne (teraz zawierają one całą zawartość plików) i aby usunąć zbędne elementy z manifestu. Czy w powyższych plikach wyróżnia się coś, co odbiega od wersji, którą utworzyłeś? Naprawdę jestem zainteresowany tym, żeby to zadziałało. –