2012-12-08 10 views
5

Sto per scrivere un'estensione Google Chrome, in particolare un lettore EPUB leggero, con l'obiettivo di renderlo più scorrevole del lettore PDF incorporato in Chrome.Trigger o invoca l'estensione di Chrome dal tipo MIME

Quello che sto cercando di capire è se è possibile in qualche modo innescare l'estensione automaticamente quando si fa clic su un collegamento che normalmente ti costringerà a salvare un file epub su disco.

In un mondo perfetto ogni link a un file epub punterebbe a uno file.epub e si sarebbe in grado di utilizzare uno script di contenuto per indicare che per l'estensione, ma purtroppo più spesso che non è il caso. Quindi, quello che sto pensando è che dovrebbe essere attivato dopo che la richiesta HTTP ha restituito almeno le intestazioni e attivato dal tipo MIME tramite uno chrome.webRequest o qualcosa del genere.

Puoi richiamare un'estensione Google Chrome dal tipo mime di un file che ti viene offerto?

+1

Per quanto ne so, al momento non esiste la possibilità di registrare la propria estensione come processore specifico per il tipo di file. La tua opzione è infatti quella di intercettare le richieste web e se rilevi file epub (per estensione di file o intestazione Content-Type 'application/epub'), copia l'URL e aprilo in una nuova scheda sotto il controllo della tua estensione. Il modo più semplice è aggiungere il comando in 'contextMenus' e agire sui collegamenti a ebups. – Stan

risposta

0

Supponendo che si stanno avendo l'azione del browser per tutte le funzionalità, è possibile rilevare e attivare \ disattivare l'estensione con chrome.webRequest.onHeadersReceived, chrome.browserAction.enable() e chrome.browserAction.disable()

Pseudo Codice

manifest.json

{ 
    "name": "Detect Mime type", 
    "version": "1.0", 
    "description": "Detecting Mime type and enabling browser action", 
    "permissions": ["webRequest", "webRequestBlocking", 
        "<all_urls>"], 
    "background": { 
    "scripts": ["background.js"] 
    }, 
    "browser_action":{ 
    "default_popup":"popup.html", // Use you related code here 
    "default_icon":"icon.jpg" 
    },  
    "manifest_version": 2 
} 

background.js

chrome.webRequest.onHeadersReceived.addListener(function (object){ 
    // Do your code for related header(s) 
    //Invoke chrome.browserAction.enable(integer tabId) or chrome.browserAction.disable(integer tabId) 
},{urls: ["<all_urls>"]}); 
chrome.tabs.query({"status":"complete"}, function(tabs){ 
    //Disable all browser actions using chrome.browserAction.disable(integer tabId) 
}); 

fatemi sapere se avete bisogno di più informazioni.

Problemi correlati