10

我在使用 chrome 扩展的 webRequest api 重定向 url 时遇到问题

chrome.webRequest.onBeforeRequest.addListener(function(details) {
return {
  redirectUrl : "file:///C:/hello.html"
};
}, {
urls : ["<all_urls>"]
}, ["blocking"]);

我可以重定向到任何 http 或 https 地址,但不能重定向到任何人都知道为什么的文件位置...?

4

4 回答 4

8
redirectUrl : chrome.extension.getURL("hello.html")

我像上面一样成功,hello.html 在扩展文件夹中。

于 2013-04-24T05:12:32.793 回答
6
  1. 首先,您必须将文件放在扩展文件夹中(或扩展文件夹的子文件夹中)。

  2. 然后,您必须在清单文件中将其声明为 a "web_accessible_resources"

示例: 如果您的扩展文件夹是 MyExt,而您要使用的文件是"MyExt/path/to/file.html". 然后你应该把它添加到清单文件中:

"web_accessible_resources": [
   "path/to/file.html"
]

一般来说,任何将在扩展之外使用的文件都应该在"web_accessible_resources"数组中声明。

请注意,声明只是扩展文件夹中文件的相对路径。

于 2016-12-15T02:50:06.247 回答
0

Chrome 扩展程序无法以任何方式访问本地资源\文件,这是出于安全考虑的功能,话虽如此,我可以知道重定向到本地 URL 的具体原因是什么(正在扩展网络传播)

于 2012-11-15T11:16:37.337 回答
-1

为了重定向到本地文件,我做了一个技巧。这是我的代码:

  1. 文件:背景.js

    chrome.webRequest.onBeforeRequest.addListener(function(details) {
      return {
        redirectUrl : chrome.extension.getURL("index.html")
      };
    }, {
    urls : ["<all_urls>"]
    }, ["blocking"]);
    function r(tabId) {
    chrome.tabs.update(tabId, {
        "url": redirectUrl
    });
    

    }

    chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {

    if (request.redirect) {
            chrome.windows.getCurrent(function(w){
                chrome.tabs.query({windowId : w.id}, function(t){
                    r(t.id);
                });
            });
    }
    sendResponse({
        redirected: redirectUrl
    });
    

    });

  2. 在您的扩展程序中创建文件 index.html,其中包含以下内容:

    <html>
    <head>
        <title>Redirecting...</title>
        <script type="text/javascript" src="redirect.js"></script>
    </head>
    <body >
    </body>
    

  3. 创建文件redirect.js:

    function request(){
    chrome.extension.sendRequest({ redirect: true }, function(rsp){ }); }

    document.addEventListener('DOMContentLoaded', function(){ request(); return false; });

于 2013-09-24T11:08:21.223 回答