C'è un modo con un javascript/jquery/crazy-css-hack per rilevare se il browser dell'utente supporta il rendering di un elemento di caricamento file <input type="file" />
funzionale? Ad esempio, il browser safari su iOS non renderizza l'elemento e vorrei invece mostrare all'utente un messaggio che la funzionalità non è supportata. So di poter ispezionare l'agente utente e verificare se si tratta di un iphone/ipad/etc, ma non so quali altri browser lo supportano o non lo supportano o non lo supportano in futuro.Rileva il supporto del browser dell'elemento di input del file HTML
risposta
La risposta di Galambalazs mi ha indirizzato nella giusta direzione solo per iOS. Ho finito per usare questo:
function supportsFileInput() {
var dummy = document.createElement("input");
dummy.setAttribute("type", "file");
return dummy.disabled === false;
}
Tuttavia, non funziona per la maggior parte dei dispositivi Android, in quanto questa funzione restituisce sempre vero, ma rende il pulsante con il testo "Upload disabile".
È possibile scrivere una funzione per fare test dummy:
function supportInputType(type) {
var dummy = document.createElement("input");
dummy.setAttribute("type", type);
return dummy.type !== "text";
}
Meglio ancora se si desidera eseguire una sola volta:
var SUPPORT_INPUT_FILE = supportInputType("file");
Quindi è possibile utilizzare questo "costante" in tutto il tuo codice.
Il modo in cui funziona il test: innanzitutto crea un elemento fittizio. Avrà il valore predefinito type = "text"
. Quindi prova a impostarlo su file
. Nel caso in cui il browser non supporti questo tipo rimarrà text
.
Buon divertimento!
iOS esegue il rendering dell'elemento di input del file come "disabilitato". Quindi puoi testare se c'è un campo di input disabilitato. Ho usato jQuery per farlo.
jQuery(function($) {
$(this).find('[type=file]').each(function() {
if ($(this).attr('disabled')) {
// do sth.
}
})
});
- 1. Rileva supporto browser per HTML Media Capture
- 2. Rileva il supporto del browser per SVG animato
- 3. .Cliccate(), il supporto del browser
- 4. Rileva aggiornamento del browser
- 5. window.devicePixelRatio supporto del browser
- 6. Supporto del browser Ember.js?
- 7. rileva la dimensione del carattere del browser
- 8. Supporto del browser per stopImmediatePropagation?
- 9. HTML 5 popup del browser su input con type = "email"
- 10. Rileva linee del browser avvolte tramite javascript
- 11. Rileva supporto browser per comunicazione inter-finestra
- 12. Rileva l'evento backspace e del delta "input"?
- 13. Rileva aggiornamento del browser in Javascript
- 14. Rileva per ... del supporto per il loop in JavaScript
- 15. Rileva la versione del browser utilizzando GWT?
- 16. Supporto JSON nativo del browser (window.JSON)
- 17. Rileva Chrome come browser associato ai file html in Windows
- 18. Sorgente Java SseEmitter/ResponseBodyEmitter: rileva il caricamento del browser
- 19. Rileva supporto per HTML5 <input form = ""> attributo
- 20. Rileva il tipo e la versione del browser da Flash
- 21. Rileva il cambiamento delle schede del browser con javascript
- 22. Rilevamento del supporto del mouse
- 23. Come modificare la dimensione del pulsante del file di input?
- 24. Supporto del browser per il carattere jolly askerisk (*) nei CSS?
- 25. Come rilevare se il supporto del browser lampeggia?
- 26. Rileva modifiche programmatiche sul testo del tipo di input
- 27. Come utilizzare il file del tipo di input in PhoneGap?
- 28. Come simulare il caricamento del file del browser con HttpWebRequest
- 29. Rileva lingua del testo
- 30. jQuery controlla se la posizione di supporto del browser: fissa
Questa è una buona idea, ma il test su iPhone restituisce true anche se in realtà non supporta il rendering di un input di file. – bkaid