2014-02-12 209 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