2012-11-14 12 views

risposta

0

Chrome Extension non può accedere alle risorse locali \ file in qualsiasi modo esso viene funzionalità di messa in sicurezza, dopo aver detto che posso sapere qual è motivo specifico per il reindirizzamento a URL locale (è l'estensione diffusione web)

+0

Come funzionalità, quindi qualcuno potrebbe reindirizzare una richiesta Web a un file javascript che si trovava sul proprio computer locale. Se questo è il caso, dovremo solo accettare che non può essere fatto. Grazie – ranjez

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

Ho avuto successo come sopra, ciao.html è nella cartella di estensione.

+4

Le risorse devono essere elencate nella chiave manifest web_accessible_resources per essere caricate da pagine esterne all'estensione. – accuya

-1

Per reindirizzare a un file locale, ho fatto un trucco. Questo è il mio codice:

  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 (richiesta, il mittente, sendResponse) {

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

    });

  2. Creare file index.html nel proprio interno con i contenuti:

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

  3. creare redirect.js file:

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

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

+0

Le pagine Javascript reindirizzate in questo modo non hanno accesso alla 'finestra' della pagina. – fakedrake

2
  1. In primo luogo, è necessario mettere il file all'interno della cartella di estensione (o all'interno di una sottocartella della cartella di estensione).

  2. Quindi, è necessario dichiararlo come "web_accessible_resources" nel file manifest.

Esempio: Se la cartella estensione è MyExt, e il file che si desidera utilizzare è "MyExt/path/to/file.html". Poi si dovrebbe aggiungere questo al file manifesto:

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

In generale, qualsiasi file che sarà utilizzato al di fuori l'estensione dovrebbe essere dichiarato nella matrice "web_accessible_resources".

Nota che la dichiarazione è solo il percorso relativo del file all'interno della cartella di estensione.

Problemi correlati