使用Chrome扩展程序覆盖下载文件类型

时间:2011-10-08 01:28:58

标签: google-chrome-extension

我正在尝试构建一个chrome扩展,它会覆盖文件的下载并在浏览器中显示。例如,如果您点击“.csv”文件的链接,我希望它在浏览器中呈现而不是下载。

Chrome已针对PDF类型和Xml Tree extension also does exactly that for xml files.

执行此操作

所以它应该是可能的,只是不确定如何去捕捉那个事件?

2 个答案:

答案 0 :(得分:5)

可以在github上的我的扩展中找到前面答案中指示的并且专门为CSV文件设计的实现:

https://github.com/rgrp/chrome-csv-viewer

此外,使用新的(ish)chrome webrequest API,现在还可以通过以下方式直接进行:

  1. 收听onBeforeRequest(这必须在后台脚本中 - 请参阅background.js)
  2. 检查这是否是CSV文件(mimetype或文件扩展名)
  3. 如果是,取消请求,然后使用xhr
  4. 显示数据

    可以在该扩展程序的分支中找到此工作版本:https://github.com/rgrp/chrome-csv-viewer/tree/4-webrequest-intercept

答案 1 :(得分:2)

您可以随时查看XML树代码:)。

如果您只需要使用链接,而不是从地址栏或文件>中打开文件;打开,您可以构建一个内容脚本,为每个链接添加一个单击事件侦听器。

在事件监听器功能中:

  1. 在第一行添加e.preventDefault(),以防止浏览器“关注”该链接。

  2. 使用链接href值,使用XMLHttpRequest获取数据。

  3. 在XMLHttpRequest回调中,打开一个新标签并相应地呈现内容。

  4. 显然,在很多方面,这不是一个很好的解决方案:

    • 您希望浏览器正常处理“普通”链接

    • 如何判断文本文件是否包含逗号分隔值(例如),除非查看文件扩展名,当然,这可能不可靠?

    您是否特别考虑.csv文件 - 和/或其他特定类型的内容?