2012-11-14 98 views
7

我使用的Chrome扩展的API的WebRequest重定向URL使用的Chrome扩展的API的WebRequest重定向URL到本地文件

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

我可以重定向到任何HTTP或HTTPS地址有问题,但不是任何人都知道为什么...的文件位置?

回答

0

Chrome扩展程序不能访问本地资源\文件中它的功能放在安全的任何方式,说了这么多我可以知道什么是重定向到本地URL(被扩展的网络传播)

+0

作为一项功能,有人可以将Web请求重定向到本地计算机上的JavaScript文件。如果是这种情况,那么将不得不接受它不能完成。谢谢 – ranjez

4
redirectUrl : chrome.extension.getURL("hello.html") 
具体原因

我成功了,像上面,hello.html是扩展文件夹。

+4

必须在web_accessible_resources清单键中列出资源,才能通过扩展名之外的页面加载资源。 – accuya

-1

要重定向到本地文件,我已经做了一个窍门。 这是我的代码:

  1. 文件:background.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(功能(请求,发件人,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:

    功能要求(){
    chrome.extension.sendRequest ({redirect:true},function(rsp){}); }

    document.addEventListener( 'DOMContentLoaded',函数(){ 请求();返回 假; });

+0

以这种方式重定向的Javascript页面无法访问页面的“窗口”。 – fakedrake

2
  1. 首先,你必须把你的文件扩展名的文件夹内(或扩展文件夹的子文件夹内)。

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

例: 如果您的扩展文件夹是MyExt,你要使用的文件是"MyExt/path/to/file.html"。那么你应该添加此清单文件:

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

一般情况下,将使用外扩展应"web_accessible_resources"阵列中声明的任何文件。

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

相关问题