Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

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

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

Вы специально думаете о файлах .csv - и/или других конкретных типах контента?