2014-02-12 6 views
2

Моя цель: когда я нажимаю ссылку, остановите все запросы и, браузер перейдет на эту ссылку. По сути, если бы я нажал на ссылку http://tabbit.org/about, ничего не произошло бы. нет запросов, нет навигации, ничего.Остановка навигации в Chrome (расширение google chrome)

Я преуспевающий остановить запросы с «onBeforeRequest» слушателем, но браузер все еще пытается перейти к стоимости HREF, давая мне страницу, которая говорит «Этот сайт был заблокирован расширением»

Что я пробовал

var navigate = true; 
var url = "http://tabbit.org/about" 

/* 
* Will prevent headers from being sent. Browser will still 
* try to navigate to the clicked link, though. 
*/ 
chrome.webRequest.onBeforeRequest.addListener(
    function(details) { 
     navigate = false; 
     return {cancel: true} ; 
    }, 
    // filters 
    {urls: [url]}, 

    ["blocking"] 
); 


// Somewhere in here is where I think navigation needs to be stopped. 
chrome.webNavigation.onBeforeNavigate.addListener(
    function(details) { 
     if (navigate == false) { 
      return false; // doesn't work. 
      //return {cancel: true}; // doesn't work. 
     }; 
    }, 
    {urls: [url]}, 
    ["blocking"] 
) 

Я не хотел использовать скрипт контента, потому что я хочу сделать это и для форм. Итак, в основном, если HTTP-запрос сделан на определенный URL-адрес, GET или POST, я бы ничего не хотел.

Я просмотрел SO (и сеть) для решения, но не кубик.

+1

Пробовали ли вы перенаправление на 204 страниц в 'onBeforeRequest'? – rsanchez

ответ

2

Попробуйте следующее обратного вызова для onBeforeRequest:

return {redirectUrl: 'http://google.com/gen_204'}; 
+0

Большое спасибо. Не думал об этом. Фактический ключ - «redirectUrl». (возможно, вы хотите отредактировать ответ, чтобы исправить это). Благодарю еще раз. – sqram

+0

@katsh исправлено, спасибо! – rsanchez

Смежные вопросы