Pytanie Zastąp pobieranie pliku z rozszerzeniami przeglądarki Chrome


Próbuję utworzyć rozszerzenie chrome, które przesłania pobranie pliku i wyświetla go w przeglądarce. Na przykład, jeśli klikniesz link do pliku ".csv", chciałbym, aby był renderowany w przeglądarce, zamiast go pobierać.

Chrome robi to już dla typów plików PDF i Rozszerzenie Xml Tree robi dokładnie to samo dla plików xml.

Powinno być możliwe, po prostu nie wiesz, jak złapać to wydarzenie?


12
2017-10-08 01:28


pochodzenie


Nie jestem pewien, ale może to być istotne code.google.com/p/chromium/issues/detail?id=35070 i groups.google.com/a/chromium.org/group/chromium-extensions/... - timoxley


Odpowiedzi:


Implementację wzdłuż linii wskazanych w poprzednich odpowiedziach i specjalnie zaprojektowane dla plików CSV można znaleźć w tym rozszerzeniu na Github:

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

Ponadto z nowym (ish) chromem API webrequest bezpośrednie podejście jest teraz możliwe według następujących zasad:

  1. Posłuchaj onBeforeRequest (musi to być skrypt w tle - zobacz background.js)
  2. Sprawdź, czy jest to plik CSV (typ MIME lub rozszerzenie pliku)
  3. Jeśli tak, anuluj żądanie, a następnie wyświetl dane za pomocą xhr

Działającą wersję tego można znaleźć w oddziale tego rozszerzenia: https://github.com/rgrp/chrome-csv-viewer/tree/4-webrequest-intercept


4
2017-12-08 19:43





Zawsze możesz spojrzeć na kod drzewa XML :).

Jeśli potrzebujesz tylko pracować z łączami, a nie otwierać plików z paska adresu lub Plik> Otwórz, możesz utworzyć skrypt zawartości, który dodaje detektor zdarzeń kliknięcia do każdego linku.

W funkcji detektora zdarzeń:

  1. Dodaj e.preventDefault() w pierwszym wierszu, aby zapobiec przeglądaniu łącza przez przeglądarkę.

  2. Używając wartości href link, pobierz dane za pomocą XMLHttpRequest.

  3. W wywołaniu zwrotnym XMLHttpRequest otwórz nową kartę i odpowiednio wyświetl zawartość.

Oczywiście, pod wieloma względami nie jest to świetne rozwiązanie:

  • chcesz, aby "normalne" linki były obsługiwane w zwykły sposób przez przeglądarkę

  • jak rozpoznać, czy plik tekstowy zawiera wartości rozdzielone przecinkami (na przykład), z wyjątkiem patrzenia na rozszerzenie pliku, które oczywiście może nie być wiarygodne?

Czy konkretnie myślisz o plikach .csv i / lub innych określonych rodzajach treści?


2
2017-10-24 15:04