Переопределить загрузку типа файла с расширениями Chrome

#google-chrome-extension

#google-chrome-расширение

Вопрос:

Я пытаюсь создать расширение Chrome, которое переопределяет загрузку файла и отображает его в браузере. Например, если вы нажмете на ссылку на файл ‘.csv’, я бы хотел, чтобы он отображался в браузере, а не загружался.

Chrome уже выполняет это для типов PDF, а расширение Xml Tree также выполняет именно это для файлов xml.

Так что это должно быть возможно, просто не уверен, как перехватить это событие?

Комментарии:

1. Не уверен, но это может иметь значение code.google.com/p/chromium/issues/detail?id=35070 и groups.google.com/a/chromium.org/group/chromium-extensions /…

Ответ №1:

Реализацию, указанную в предыдущих ответах и специально разработанную для файлов CSV, можно найти в этом моем расширении на github:

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

Кроме того, с новым (иш) Chrome webrequest API теперь возможен прямой подход по следующим направлениям:

  1. Прослушайте onBeforeRequest (это должно быть в фоновом скрипте — см. background.js )
  2. Проверьте, является ли это файлом CSV (mimetype или расширением файла)
  3. Если это так, отмените запрос и затем отобразите данные с помощью xhr

Рабочую версию этого можно найти в ветке этого расширения: https://github.com/rgrp/chrome-csv-viewer/tree/4-webrequest-intercept

Ответ №2:

Вы всегда можете посмотреть на код дерева XML :).

Если вам нужно работать только со ссылками, а не открывать файлы из адресной строки или меню Файл> Открыть, вы можете создать сценарий содержимого, который добавляет прослушиватель событий щелчка к каждой ссылке.

В функции прослушивателя событий:

  1. Добавьте e.preventDefault() в первую строку, чтобы браузер не переходил по ссылке.

  2. Используя значение ссылки href, получите данные с помощью XMLHttpRequest.

  3. В обратном вызове XMLHttpRequest откройте новую вкладку и соответствующим образом отобразите содержимое.

Очевидно, что во многих отношениях это не лучшее решение:

  • вы хотите, чтобы «обычные» ссылки обрабатывались браузером как обычно

  • как вы можете определить, содержит ли текстовый файл значения, разделенные запятыми (например), кроме просмотра расширения файла, которое, конечно, может быть ненадежным?

Вы конкретно имеете в виду файлы .csv и / или другие конкретные типы контента?