2

这是我第一次接触任何类型的客户端 Web 编程语言,而且,我正在尝试制作我的第一个 chrome 插件。基本上我想要做的是编码一些重定向的东西: -

ABC.com/ID

A.ABC.com/ID

到目前为止,我已将其全部编码,但是,它的作用是加载 ABC.com/ID,等待它完成,然后注入我的内容脚本并重新加载 A.ABC.com/ID。这显然是对时间的巨大浪费。有什么办法可以告诉 chrome 在 DNS 查找之前加载这个脚本(因为那没用,因为它在一个新的子域上),或者在打开与站点的连接之前(因为这不是我们的页面寻找)?我知道内容脚本可能不是最好的主意,如果不是,那会是什么?

4

1 回答 1

1

是的,您可以使用Web 请求 API来实现,而无需任何内容脚本。以下演示阻止所有FacebookURL 并将它们重定向到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

此代码阻止所有 URL 请求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

所有请求Facebook都重定向到Google

于 2012-12-27T07:05:43.037 回答