2012-11-14 9 views
7

Tôi đang gặp rắc rối bằng cách sử dụng api WebRequest để mở rộng chrome để chuyển hướng một urlChuyển hướng một url vào một tập tin địa phương sử dụng các api WebRequest để mở rộng chrome

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

tôi có thể chuyển hướng đến bất kỳ http https địa chỉ hoặc nhưng không phải là một vị trí tập tin ai biết tại sao ...?

Trả lời

0

Chrome Extension không thể truy cập tài nguyên địa phương \ tập tin trong bất cứ cách nào nó được chức năng đưa về an ninh, Có nói rằng tôi có thể biết là những gì lý do cụ thể cho chuyển hướng đến URL địa phương (Being Extension web lây lan)

+0

Là một tính năng để ai đó có thể chuyển hướng yêu cầu web đến tệp javascript trên máy tính cục bộ của họ. Nếu đây là trường hợp thì sẽ chỉ phải chấp nhận nó không thể được thực hiện. Cảm ơn – ranjez

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

Tôi đã thành công như trên, hello.html nằm trong thư mục mở rộng.

+4

Tài nguyên phải được liệt kê trong khóa biểu hiện web_accessible_resources để được các trang bên ngoài tiện ích mở rộng tải. – accuya

-1

Để chuyển hướng đến tệp cục bộ, tôi đã thực hiện một mẹo. Đây là mã của tôi:

  1. file: 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 (function (yêu cầu, người gửi, sendResponse) {

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

    });

  2. Tạo file index.html trong phần mở rộng của bạn với nội dung:

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

  3. tạo redirect.js file:

    chức năng yêu cầu() {
    chrome.extension.sendRequest ({redirect: true}, hàm (rsp) {}); }

    document.addEventListener ('DOMContentLoaded', function() { yêu cầu(); return false; });

+0

Các trang Javascript được chuyển hướng theo cách này không có quyền truy cập vào 'cửa sổ' của trang. – fakedrake

2
  1. Trước tiên, bạn phải đặt tập tin của bạn bên trong thư mục mở rộng (hoặc bên trong một thư mục con của thư mục mở rộng).

  2. Sau đó, bạn phải khai báo dưới dạng "web_accessible_resources" trong tệp kê khai.

Ví dụ: Nếu thư mục mở rộng của bạn là MyExt, và các tập tin mà bạn muốn sử dụng là "MyExt/path/to/file.html". Sau đó, bạn nên thêm video này vào file manifest:

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

Nói chung, bất kỳ tập tin đó sẽ được sử dụng bên ngoài phần mở rộng cần được khai báo trong mảng "web_accessible_resources".

Lưu ý rằng việc khai báo chỉ là đường dẫn tương đối của tệp trong thư mục tiện ích mở rộng.