这是我第一次接触任何类型的客户端网页编程语言,而且,我正试图制作我的第一个chrome插件。基本上我想做的是编码重定向的东西: -
ABC.com/ID
到
A.ABC.com/ID
到目前为止,我已将其全部编码,但是,它的作用是加载ABC.com/ID,等待它完成,然后注入我的内容脚本并重新加载A.ABC.com/ID。这显然是浪费时间。有没有什么方法可以告诉chrome在DNS查找之前加载这个脚本(因为它没用,因为它在新的子域上),或者,在打开到站点的连接之前(因为这不是页面我们是寻找)?我理解内容脚本可能不是最好的主意,如果不是,那会是什么?
答案 0 :(得分:1)
是的,您可以使用web request API来实现,而无需任何内容脚本。以下演示文件会屏蔽所有Facebook
网址,并将其重定向至Google
,同样使用ABC.com/ID
代替Facebook
并使用A.ABC.com/ID
代替Google
这个用例。
manifest.json
确保所有权限均可用,并注册带扩展名的后台页面。
{
"name": "Hanlder for Navigation",
"description": "http://stackoverflow.com/questions/14050467",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"permissions":["https://www.facebook.com/*","webRequest","webRequestBlocking"]
}
background.js
此代码会阻止对Facebook
的所有网址请求,并将其重定向到Google
。
// Register an event listener which
//traces all requests before being fired
chrome.webRequest.onBeforeRequest.addListener(function (details) {
return {
redirectUrl: "http://www.google.co.in/" /*Redirection URL*/
};
}, {
urls: ["*://www.facebook.com/*"] /* List of URL's */
}, ["blocking"]); // Block intercepted requests until this handler has finished
Output