在Chrome中停止导航(谷歌浏览器扩展程序)

时间:2014-02-12 12:57:23

标签: google-chrome google-chrome-extension

我的目标:当我点击链接时,停止所有请求浏览器导航到该链接。基本上,如果我点击链接http://tabbit.org/about,则不会发生任何事情。没有请求,没有导航,没有。

我成功使用“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"]
)

我不想使用内容脚本,因为我也想为表单执行此操作。 所以基本上如果对某个URL,GET或POST发出http请求,我不想发生任何事情。

我浏览了SO(和网页)以获得解决方案,但没有骰子。

1 个答案:

答案 0 :(得分:2)

onBeforeRequest的回调中尝试以下内容:

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