Google chrome extension 从mime类型触发或调用Chrome扩展

Google chrome extension 从mime类型触发或调用Chrome扩展,google-chrome-extension,Google Chrome Extension,我正在编写一个GoogleChrome扩展,特别是一个轻量级的EPUB阅读器,目标是它和Chrome内置的PDF阅读器一样流畅 我想弄清楚的是,当你点击一个链接时,你是否可以自动触发扩展,这个链接通常会迫使你将一个epub文件保存到磁盘上 在一个完美的世界中,指向epub文件的每个链接都指向文件.epub,您可以使用内容脚本将其指向扩展名,但不幸的是,通常情况并非如此。因此,我认为它必须在HTTP get请求返回了头之后被触发,并通过chrome.webRequest或其他方式触发mime类型

我正在编写一个GoogleChrome扩展,特别是一个轻量级的EPUB阅读器,目标是它和Chrome内置的PDF阅读器一样流畅

我想弄清楚的是,当你点击一个链接时,你是否可以自动触发扩展,这个链接通常会迫使你将一个epub文件保存到磁盘上

在一个完美的世界中,指向epub文件的每个链接都指向
文件.epub
,您可以使用内容脚本将其指向扩展名,但不幸的是,通常情况并非如此。因此,我认为它必须在HTTP get请求返回了头之后被触发,并通过
chrome.webRequest
或其他方式触发mime类型


您可以从提供给您的文件的mime类型调用Google Chrome扩展名吗?

假设您对所有功能都有浏览器操作,您可以使用和检测并启用\禁用扩展名

伪代码

manifest.json

{
“名称”:“检测Mime类型”,
“版本”:“1.0”,
“说明”:“检测Mime类型并启用浏览器操作”,
“权限”:[“webRequest”、“webRequestBlocking”,
""],
“背景”:{
“脚本”:[“background.js”]
},
“浏览器操作”:{
“default_popup”:“popup.html”//在此处使用相关代码
“默认图标”:“icon.jpg”
},    
“清单版本”:2
}
background.js

chrome.webRequest.onHeadersReceived.addListener(函数(对象)){
//是否为相关标题编写代码
//调用chrome.browserAction.enable(整数选项卡ID)或chrome.browserAction.disable(整数选项卡ID)
},{url:[“”]});
chrome.tabs.query({“status”:“complete”},函数(tabs){
//使用chrome.browserAction.Disable(整数选项卡ID)禁用所有浏览器操作
});

如果您需要更多信息,请告诉我。

据我所知,目前无法将您的扩展名注册为特定的文件类型处理器。您可以选择拦截web请求,如果您检测到epub文件(通过文件扩展名或内容类型头
应用程序/epub
),请复制URL并在扩展名控制下的新选项卡中打开它。更简单的方法是将您的命令添加到
上下文菜单中
,并对指向ebups的链接进行操作。
{
  "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
}
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)
});