1. Risposta alla domanda principale
Il copione $(window).height()
funziona bene (mostra l'altezza del viewport e non il documento con altezza di scorrimento), ma deve inserire correttamente il tag doctype nel documento, ad esempio questi doctypes:
Per HTML 5:
<!DOCTYPE html>
Per HTML4 di transizione:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Probabilmente il tipo di documento predefinito assunto da alcuni browser è tale $(window).height()
prende l'altezza del documento e non l'altezza del browser. Con la specifica doctype, è risolto in modo soddisfacente, e sono abbastanza sicuro che i peps eviteranno il "passaggio da scorrimento a overflow nascosto e poi indietro", che è, mi dispiace, un trucco un po 'sporco, specialmente se non lo fai' documentarlo sul codice per l'utilizzo futuro del programmatore.
2. Un suggerimento AGGIUNTIVO, nota a parte:
Inoltre, se stai facendo uno script, puoi inventare dei test per aiutare i programmatori a usare le tue librerie, fammi inventare un paio:
$ (document) .ready (function () {
if(typeof $=='undefined') {
alert("PROGRAMMER'S Error: you haven't called JQuery library");
} else if (typeof $.ui=='undefined') {
alert("PROGRAMMER'S Error: you haven't installed the UI Jquery library");
}
if(document.doctype==null || screen.height < parseInt($(window).height()) ) {
alert("ERROR, check your doctype, the calculated heights are not what you might expect");
}
});
EDIT: circa la parte 2, "Un suggerimento AGGIUNTIVO, nota a parte": @Machiel, nel commento di ieri (2014-09-04), era assolutamente UTENTE: il controllo di $ non può essere all'interno dell'evento pronto di Jquery, perché stiamo, come ha sottolineato, supponendo che $ sia già definito. GRAZIE PER AVER PENSATO QUESTO, e per favore, il resto di voi lettori corregga questo, se lo avete usato nei vostri script. Il mio suggerimento è: nelle tue librerie inserisci una funzione "install_script ()" che inizializza la libreria (inserisci qualsiasi riferimento a $ all'interno di tale funzione init, inclusa la dichiarazione di ready ()) e ALL'INIZIO di tale funzione "install_script ()" , controlla se $ è definito, ma rendi tutto indipendente da JQuery, così la tua libreria può "diagnosticare se stessa" quando JQuery non è ancora definito. Preferisco questo metodo piuttosto che forzare la creazione automatica di un JQuery che lo porta da un CDN. Quelle sono piccole note a parte per aiutare altri programmatori. Penso che le persone che creano librerie debbano essere più ricche nel feedback sugli errori potenziali del programmatore. Ad esempio, Google Apis ha bisogno di un manuale a parte per comprendere i messaggi di errore. È assurdo, avere bisogno di documentazione esterna per alcuni piccoli errori che non richiedono di andare a cercare un manuale o una specifica. La libreria deve essere SELF DOCUMENTATA. Scrivo codice anche occupandomi degli errori che potrei commettere anche tra sei mesi, e cerca ancora di essere un codice pulito e non ripetitivo, già scritto per prevenire futuri errori degli sviluppatori. Penso che le persone che creano librerie debbano essere più ricche nel feedback sugli errori potenziali del programmatore. Ad esempio, Google Apis ha bisogno di un manuale a parte per comprendere i messaggi di errore. È assurdo, avere bisogno di documentazione esterna per alcuni piccoli errori che non richiedono di andare a cercare un manuale o una specifica. La libreria deve essere SELF DOCUMENTATA. Scrivo codice anche occupandomi degli errori che potrei commettere anche tra sei mesi, e cerca ancora di essere un codice pulito e non ripetitivo, già scritto per prevenire futuri errori degli sviluppatori. Penso che le persone che creano librerie debbano essere più ricche nel feedback sugli errori potenziali del programmatore. Ad esempio, Google Apis ha bisogno di un manuale a parte per comprendere i messaggi di errore. È assurdo, avere bisogno di documentazione esterna per alcuni piccoli errori che non richiedono di andare a cercare un manuale o una specifica. La libreria deve essere SELF DOCUMENTATA. Scrivo codice anche occupandomi degli errori che potrei commettere anche tra sei mesi, e cerca ancora di essere un codice pulito e non ripetitivo, già scritto per prevenire futuri errori degli sviluppatori. Ho bisogno che tu vada a cercare un manuale o una specifica. La libreria deve essere SELF DOCUMENTATA. Scrivo codice anche occupandomi degli errori che potrei commettere anche tra sei mesi, e cerca ancora di essere un codice pulito e non ripetitivo, già scritto per prevenire futuri errori degli sviluppatori. Ho bisogno che tu vada a cercare un manuale o una specifica. La libreria deve essere SELF DOCUMENTATA. Scrivo codice anche occupandomi degli errori che potrei commettere anche tra sei mesi, e cerca ancora di essere un codice pulito e non ripetitivo, già scritto per prevenire futuri errori degli sviluppatori.