2015-02-15 2 views
0

Я делаю расширение в Chrome и должен остановить загрузку страницы (без полной загрузки страницы) и перенаправить на URL-адрес, если совпадает с запросом ajax.Остановить загрузку страницы и перенаправить ее в сценарий содержимого

Я использую content_scripts.

И пытался использовать

window.location.replace("http://facebook.com"); 

Но редирект происходит один раз завершается загрузка страницы ..

Даже пытался использовать

window.stop(); 

это тоже не работает, чтобы остановить страницу погрузка.

Есть ли способ остановить загрузку страницы и перенаправить ее до загрузки страницы?

+0

Почему 'window.stop()' не работает? – void

+0

@void Это слишком поздно. Я пишу ответ прямо сейчас. – Xan

+0

Начало очень поздно, и я вижу данные веб-сайта, а затем перенаправляет – kannu

ответ

3

Вы пытаетесь сделать это с помощью скрипта контента.

Сценарии содержания имеют run_at parameter, который указывает, когда они выполняются (относительно загрузки страницы).

По умолчанию скрипты содержимого работают на уровне document_idle: Chrome ждет, пока страница полностью не загрузится до ее выполнения.

У вас есть два варианта:

  • Вы можете сохранить маршрут содержания сценария, но вы должны указать "run_at" : "document_start" параметр в конфигурации содержания сценария.

    Это выполнит ваш код как можно скорее (до того, как документ будет загружен, но после запуска ответа).

  • Если вы беспокоитесь о том, что не загружаете страницу вообще (не отправляя запрос на сайт), вам необходимо перехватить ее на более низком уровне. webRequest API может предоставить средства для этого.

    Если вы поймаете запрос на мероприятие onBeforeRequest, вы можете перенаправить его до его отправки. Рекомендуется фильтровать по типу. Обратите внимание, что в этом случае вам даже не понадобится скрипт содержимого: webRequest событий нужно прослушать в фоновом скрипте.

    См. CatBlock example.

+0

Отлично, этот «run_at»: «document_start» работает. . :) – kannu

+0

также, мне нужно сделать это, прежде чем отправить запрос на веб-сайт. , так будет onBeforeRequest работать в content_scripts?Я проверил, что многие коды не работают в content_scripts, я попробую сейчас. – kannu

+0

Нет, не будет. Как я уже сказал, посмотрите пример CatBlock и измените его для своих нужд. – Xan