5

我试图通过复制this answer所做的工作来创建Chrome扩展程序,以帮助我了解Chrome的webRequest API,但没有名称空间的实验部分(自webRequest开始不再需要)在Chrome的后备箱中。使用Google Chrome webRequest API进行简单转发

在我的背景页我的代码:

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
function interceptRequest(request) { 
    return { redirectUrl: 'http://www.yahoo.com' } 
} 
chrome.webRequest.onBeforeRequest.addListener(interceptRequest, { urls: ['*://*.google.com/*'] }, ['blocking']); 
    </script> 
    </head><body></body> 
</html> 

在我的清单文件我有:

{ 
    "name": "My Extension", 
    "version": "0.1", 
    "background_page": "background.html", 
    "permissions" : [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*/*" 
    ] 
} 

基于前面提到的问题,我应该转发给http://www.yahoo.com当我访问https://www.google.com和我的扩展程序已加载,但是,https://www.google.com加载没有任何转发效果。为了简单地在Chrome中使用webRequest API将用户从一个URI转发到另一个URI,我需要做些什么?

+0

这很奇怪。我唯一能想到的就是确保您不会从Chrome文档加载任何同步XHR或包含来自在线资源的任何脚本标记。 – gengkev 2012-01-12 01:09:57

回答

3

您的网址匹配模式不正确。你只需要添加一个结尾的斜线:

{urls: ['https://www.google.com/']} 

或者,你可以使用: '*://www.google.com/'匹配所有协议,“*:// WWW。 google.com/*”匹配不仅仅是域,'*://*.google.com/*'匹配所有子域,协议和路径等

参见: http://code.google.com/chrome/extensions/trunk/match_patterns.html

+0

感谢您的反馈,但这些解决方案中没有一个导致浏览器被转发给雅虎。你看到上面有什么不对吗,或者是我没有包括的东西? – 2012-01-15 00:32:16

+1

我用你的代码创建了一个扩展,并且在我的上面的注释中描述的在'urls'字段中输入了一个斜杠后,它对我来说工作正常。我唯一注意到的是你的清单文件中的content_scripts ...你有一个'content.js'文件吗?你不需要这个功能。你的所有路径是否正确(background.html和content.js位于你的扩展的根目录)?此外,在您的background.html中包装''标签附近的JS代码(我认为它被包装 - 它是一个html文件,毕竟不是js文件)。 – rgthree 2012-01-15 17:03:31

+0

即使添加了“/”并从清单中排除了content.js,我仍无法在访问http://www.google.com时转到该页面。我已经更新了上述文件的来源,使其更全面(它们现在包含文件的全部内容)并删除清单中多余的项目。上述文件中是否有任何脱离您创建的功能版本的内容?我真的很想让这个工作。 – 2012-01-16 16:45:58

相关问题