我正在尝试编写一个 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 扩展加载的(通过开发人员工具中的网络选项卡)
问题:
回调不会被触发。可疑的是,原始请求仍处于“待处理”状态。
这个扩展的重点是为某些请求放置一些存根/模拟响应。我错过了什么吗?