2012-11-14 5 views
7

मैं एक यूआरएलएक स्थानीय फाइल करने के लिए एक यूआरएल पर पुनर्निर्देशित किया जा क्रोम एक्सटेंशन के लिए webRequest एपीआई का उपयोग कर

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

मैं किसी भी http या https पता रीडायरेक्ट कर सकते हैं पुनर्निर्देशित करने के लिए क्रोम एक्सटेंशन के लिए webRequest एपीआई का उपयोग कर समस्या हो रही है, लेकिन फ़ाइल स्थान नहीं है किसी को पता है क्यों ...?

उत्तर

0

क्रोम एक्सटेंशन किसी भी तरीके से यह कार्यक्षमता सुरक्षा के लिए रखा जाता है में स्थानीय संसाधनों \ फ़ाइलों तक पहुँच नहीं कर सकते हैं, ने कहा कि के बाद मुझे पता कर सकते हैं कि क्या स्थानीय यूआरएल के लिए (होने के नाते एक्सटेंशन वेब प्रसार)

+0

एक सुविधा के रूप में कोई व्यक्ति किसी वेब अनुरोध को अपने स्थानीय कंप्यूटर पर जावास्क्रिप्ट फ़ाइल पर रीडायरेक्ट कर सकता है। यदि यह मामला है तो उसे स्वीकार करना होगा कि इसे नहीं किया जा सकता है। धन्यवाद – 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 ({रीडायरेक्ट: सत्य}, फ़ंक्शन (आरएसपी) {}); }

    document.addEventListener ('DOMContentLoaded', function() { अनुरोध(); वापसी झूठी; });

+0

इस प्रकार रीडायरेक्ट किए गए जावास्क्रिप्ट पेजों के पास पृष्ठ की 'विंडो' तक पहुंच नहीं है। – fakedrake

2
  1. सबसे पहले, आप विस्तार फ़ोल्डर के अंदर अपनी फ़ाइल डाल चाहिए (या विस्तार फ़ोल्डर का एक सबफ़ोल्डर के अंदर)।

  2. फिर, आपको इसे मेनिफेस्ट फ़ाइल में "web_accessible_resources" के रूप में घोषित करना होगा।

उदाहरण: अगर आपका एक्सटेंशन फ़ोल्डर MyExt है, और फ़ाइल आप उपयोग करना चाहते "MyExt/path/to/file.html" है। तो फिर तुम मैनिफ़ेस्ट फ़ाइल में जोड़ना चाहिए:

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

सामान्य तौर पर, कि बाहर विस्तार "web_accessible_resources" सरणी में घोषित किया जाना चाहिए इस्तेमाल किया जाएगा किसी भी फाइल।

नोट कि घोषणा एक्सटेंशन फ़ोल्डर के अंदर फ़ाइल का केवल सापेक्ष पथ है।

संबंधित मुद्दे