2

我正在尝试编写一个 chrome 扩展,将某些请求路由到另一个。我找到了一些关于如何做到这一点的资源,并且我已经完成了一半的工作。这是扩展代码:

var requestRoutingTable = { 
    'some/url/i/want/to/catch' : 'libs/TVKeyValue.js'
};
chrome.webRequest.onBeforeRequest.addListener(function(details){
    for (var key in requestRoutingTable){
        if (details.url.indexOf(key) != -1){
            console.log('redirecting to: ' + chrome.extension.getURL(requestRoutingTable[key]));
            return {redirectUrl: chrome.extension.getURL(requestRoutingTable[key])};
        }   
    }   
}, {urls: ["<all_urls>"]}, ["blocking"]);

为了测试这是否有效,我在 jQuery 中编写了以下内容并加载了扩展:

$.getScript('some/url/i/want/to/catch', function(script, textStatus, jqXHR){
    // this doesn't get here!
}

症状:

  • 我看到扩展代码中的 console.log 被触发
  • 我看到实际文件是通过 chrome 扩展加载的(通过开发人员工具中的网络选项卡)

问题:

回调不会被触发。可疑的是,原始请求仍处于“待处理”状态。

这个扩展的重点是为某些请求放置一些存根/模拟响应。我错过了什么吗?

4

1 回答 1

1

我相信这可能是 Chrome 扩展的问题,我已将其报告为可能的错误:

http://code.google.com/p/chromium/issues/detail?id=145074

于 2012-09-12T01:05:21.870 回答