【问题标题】:Trigger or invoke Chrome extension from mime type从 mime 类型触发或调用 Chrome 扩展
【发布时间】:2012-12-08 12:48:37
【问题描述】:

我正在编写一个谷歌浏览器扩展程序,特别是一个轻量级的 EPUB 阅读器,目标是与 Chrome 中内置的 PDF 阅读器一样流畅。

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

在理想情况下,每个指向 epub 文件的链接都会指向 file.epub,并且您可以使用内容脚本将其指向扩展名,但不幸的是,通常情况并非如此。所以我在想的是,它必须在 HTTP get 请求至少返回标头后触发,并通过chrome.webRequest 或其他东西触发 mime 类型。

您能否从提供给您的文件的 mime 类型调用 Google Chrome 扩展程序?

【问题讨论】:

  • 据我所知,目前无法将您的扩展注册为特定的文件类型处理器。您的选择确实是拦截网络请求,如果您检测到 epub 文件(通过文件扩展名或 Content-Type 标头application/epub),请复制 URL 并在您的扩展程序控制下的新选项卡中打开它。更简单的方法是将您的命令添加到 contextMenus 并处理指向 ebups 的链接。

标签: google-chrome-extension


【解决方案1】:

假设您对所有功能都有浏览器操作,您可以使用 chrome.webRequest.onHeadersReceivedchrome.browserAction.enable()chrome.browserAction.disable() 检测和启用\禁用扩展

伪代码

ma​​nifest.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)
});

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

【讨论】:

    猜你喜欢
    • 2012-05-19
    • 2011-05-14
    • 2014-09-10
    • 2018-11-29
    • 2023-03-08
    • 2010-11-05
    • 1970-01-01
    相关资源
    最近更新 更多