2011-10-08 10 views
12

Sto provando a creare un'estensione chrome che sostituisce il download di un file e lo visualizza nel browser. Ad esempio, se si fa clic su un collegamento a un file ".csv", mi piacerebbe che fosse visualizzato nel browser anziché scaricarlo.Ignora il download di un tipo di file con estensioni di Chrome

Chrome già lo fa per i tipi di PDF e il Xml Tree extension also does exactly that for xml files.

Così dovrebbe essere possibile, solo non è sicuro come andare circa la cattura di quell'evento?

+2

Non sicuro, ma questo potrebbe essere rilevante http://code.google.com/p/chromium/issues/detail?id = 35070 e http://groups.google.com/a/chromium.org/group/chromium-extensions/browse_thread/thread/a76cb5f021bbce7e/a1c439d747250170?lnk=gst&q=file+type#a1c439d747250170 – timoxley

risposta

4

Un'implementazione lungo le linee indicate dai nelle risposte precedenti e specificamente progettati per file CSV può essere trovato in questa estensione di mine su GitHub:

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

Inoltre, con il nuovo (ish) cromato webrequest API un approccio diretto è ora possibile secondo le seguenti linee:

  1. Ascolta onBeforeRequest (questo deve essere in uno script di fondo - vedi background.js)
  2. Controllare se si tratta di un file CSV (tipo MIME o estensione del file)
  3. Se è così annullare la richiesta e quindi visualizzare i dati utilizzando XHR

una versione funzionante di questo può essere trovato in un ramo di tale estensione : https://github.com/rgrp/chrome-csv-viewer/tree/4-webrequest-intercept

2

Si può sempre guardare il codice dell'albero XML :).

Se è necessario utilizzare solo collegamenti e non aprire file dalla barra degli indirizzi o File> Apri, è possibile creare uno script di contenuto che aggiunga un listener di eventi di clic a ogni collegamento.

Nella funzione listener di eventi:

  1. Aggiungere e.preventDefault() in prima linea per evitare che il browser 'segue' il link.

  2. Utilizzando il valore href del collegamento, ottenere i dati con XMLHttpRequest.

  3. Nel richiamo XMLHttpRequest, aprire una nuova scheda e visualizzare di conseguenza il contenuto.

Ovviamente, in molti modi, questa non è una grande soluzione:

  • desideri 'normali' i collegamenti per essere trattati come di consueto dal browser

  • come si può dire se un file di testo contiene valori separati da virgole (ad esempio), tranne guardando all'estensione del file che, ovviamente, potrebbe non essere affidabile?

Stai pensando specificamente ai file .csv e/o ad altri tipi specifici di contenuti?

Problemi correlati