Переопределить загрузку типа файла с помощью расширений Chrome - PullRequest
12 голосов
/ 08 октября 2011

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

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

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

Ответы [ 2 ]

5 голосов
/ 08 декабря 2012

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

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

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

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

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

2 голосов
/ 24 октября 2011

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

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

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

  1. Добавьте e.preventDefault() в первой строке, чтобы браузер не «перешел» по ссылке.

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...