2012-12-08 50 views
5

我正在编写一个Google Chrome扩展程序,特别是一个轻量级的EPUB阅读程序,其目标与Chrome中内置的PDF阅读程序差不多。从MIME类型中触发或调用Chrome扩展程序

我试图弄清楚的是,如果您可以以某种方式自动触发扩展名当您单击一个通常会强制您将epub文件保存到磁盘的链接时。

在一个完美的世界中,每个到epub文件的链接都会指向一个file.epub,并且您可以使用内容脚本将其指向该扩展名,但不幸的是,情况往往并非如此。所以我在想,它必须在HTTP请求至少返回头部之后触发,并通过chrome.webRequest或其他类型触发MIME类型。

您可以从正在提供给您的文件的MIME类型中调用Google Chrome扩展吗?

+1

据我所知,目前还没有可能将您的扩展注册为特定文件类型的处理器。您的选择确实是拦截Web请求,并且如果您检测到epub文件(通过文件扩展名或Content-Type标题'application/epub'),请复制该URL并在扩展名控制下的新选项卡中打开它。更简单的方法是将您的命令添加到'contextMenus'中,并对ebups的链接执行操作。 – Stan

回答

0

假设你有浏览器操作所有功能,可以检测并实现与chrome.webRequest.onHeadersReceivedchrome.browserAction.enable()chrome.browserAction.disable() \禁用扩展

伪码

的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) 
}); 

让我知道如果你需要更多的信息。