2012-12-08 5 views
5

Ich schreibe gerade eine Google Chrome-Erweiterung, insbesondere einen leichten EPUB-Reader, mit dem Ziel, dass er genauso einfach wie der eingebaute PDF-Reader in Chrome ist.Auslöser oder Aufruf der Chrome-Erweiterung von MIME-Typ

Ich versuche herauszufinden, ob Sie die Erweiterung automatisch auslösen können, wenn Sie auf einen Link klicken, der Sie normalerweise zwingen würde, eine EPUB-Datei auf der Festplatte zu speichern. In einer perfekten Welt würde jeder Link zu einer epub-Datei auf eine file.epub verweisen und Sie könnten ein Inhaltsskript verwenden, um dies auf die Erweiterung zu verweisen, aber leider ist dies meistens nicht der Fall. Also was ich denke ist, dass es ausgelöst werden müsste, nachdem die HTTP-Anfrage die Header mindestens zurückgegeben hat, und den Mime-Typ über eine chrome.webRequest oder etwas auslösen.

Können Sie eine Google Chrome-Erweiterung aus dem MIME-Typ einer Datei aufrufen, die Ihnen geliefert wird?

+1

Nach meinem Wissen gibt es derzeit keine Möglichkeit, Ihre Erweiterung als bestimmten Dateityp-Prozessor zu registrieren. Ihre Option ist in der Tat, Web-Anfragen abzufangen und wenn Sie epub-Datei (per Dateierweiterung oder Content-Type-Header 'application/epub') erkennen, kopieren Sie die URL und öffnen Sie sie in neue Registerkarte unter Kontrolle Ihrer Erweiterung. Ein einfacherer Weg besteht darin, Ihren Befehl in "contextMenus" einzufügen und auf Links zu ebups einzuwirken. – Stan

Antwort

0

Angenommen, Sie Browseraktion haben für die ganze Funktionalität, können Sie \ disable Erweiterung mit chrome.webRequest.onHeadersReceived, chrome.browserAction.enable() und chrome.browserAction.disable()

Pseudo-Code

manifest.json

erkennen und aktivieren
{ 
    "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) 
}); 

Lassen Sie mich wissen, wenn Sie mehr Informationen benötigen.