2011-11-04 15 views
10

voglio verificare se il browser che sta correndo la mia pagina è in grado di gestire il 'HTML 5 segnaposto'Modernizr solo per un rapido controllo?

so di poter aggiungere il seguente controllo javascript:

!Modernizr.input.placeholder 

ma vale la pena di importa una libreria solo per un controllo?

anche come fa il modernizr per me (intendo come viene implementato sotto la copertina)?

risposta

10

Se si desidera controllare per placeholder supporto, quindi tutto ciò che devi fare è;

var placeholderSupport = "placeholder" in document.createElement("input"); 

E per rispondere alla tua altra domanda; non, non c'è assolutamente nessun punto compreso l'intera libreria Modernizr per 1 linea di JS (Modernizr è 1000+ linee .... figuratevi:)) *

* Sì, non minified, ma il concetto rimane

+11

Un punto di chiarimento, Modernizr fornisce la fonte non compressa per scopi di ricerca e sviluppo. Modernizr non offre una versione minified con tutto ciò che contiene. Sei incoraggiato a creare una build personalizzata. Quindi non è un confronto tra liner oneliner vs 1000+. –

+9

Inoltre Modernizr è un repository di casi limite. Il supporto del test per il tipo di input = range, ad esempio, è irto di pericoli. Inventare test personalizzati ogni volta è un buon modo per finire con qualcosa di fragile come uno sniff UA.Le persone lo hanno già fatto con i test di input dei moduli HTML5 e tutti i loro rilevamenti "così semplici" sono stati interrotti. Disclaimer: Scrivo Modernizr, ovviamente. : p –

+3

Per essere onesti, dopo gzip è una differenza da 87 a 500 byte :) –

3

It's open-source. Go read it.

Modernizr['input'] = (function(props) { 
    for (var i = 0, len = props.length; i < len; i++) { 
    attrs[ props[i] ] = !!(props[i] in inputElem); 
    } 
    return attrs; 
})(('autocomplete autofocus list placeholder max min ' + 
    'multiple pattern required step').split(' ')); 
+2

Certo, quella fonte è molto difficile da capire per le persone che non hanno familiarità con quel trucco. – SLaks

+0

Si potrebbe grattarsi la testa se non si è visto l'idioma '!!' prima, ma è facile capirne l'essenza, il che è che modernizr sta solo controllando se la proprietà esiste e nulla più. – mquander

+1

@mquander Quel codice sorgente è un po 'oltre me. Perché i due punti esclamativi ??? – Zo72

1

trovato questo: http://davidwalsh.name/html5-placeholder

Codice:

function hasPlaceholderSupport() { 
    var input = document.createElement('input'); 
    return ('placeholder' in input); 
} 

C'è anche una soluzione di ripiego, cliccando sul link

Problemi correlati