2014-02-12 216 views
2

我的目標:當我點擊一個鏈接時,停止瀏覽器的所有請求導航到該鏈接。從本質上講,如果我點擊鏈接http://tabbit.org/about,什麼都不會發生。沒有請求,沒有導航,什麼都沒有。在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

你嘗試重定向到'onBeforeRequest'一個204頁? – rsanchez

回答

2

嘗試在你的回調onBeforeRequest如下:

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

非常感謝。沒想到這個。但實際的關鍵是「redirectUrl」。 (可能想編輯答案來解決這個問題)。 thanka再次。 – sqram

+0

@katsh修,謝謝! – rsanchez