1. Réponse à la question principale
Le script $(window).height()
fonctionne bien (montrant la hauteur de la fenêtre d'affichage et non le document avec une hauteur de défilement), MAIS il a besoin que vous placiez correctement la balise doctype dans votre document, par exemple ces doctypes:
Pour HTML 5:
<!DOCTYPE html>
Pour HTML4 de transition:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Le doctype par défaut supposé par certains navigateurs est probablement celui qui $(window).height()
prend la hauteur du document et non la hauteur du navigateur. Avec la spécification doctype, elle est résolue de manière satisfaisante, et je suis sûr que vos peps éviteront de "changer le débordement de défilement en caché puis en arrière", ce qui est, je suis désolé, un truc un peu sale, surtout si vous ne le faites pas '' t le documenter sur le code pour une utilisation future par le programmeur.
2. Un conseil supplémentaire, notez à côté:
De plus, si vous faites un script, vous pouvez inventer des tests pour aider les programmeurs à utiliser vos bibliothèques, permettez-moi d'en inventer quelques-uns:
$ (document) .ready (fonction () {
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: à propos de la partie 2, "Un conseil supplémentaire, notez à côté": @Machiel, dans le commentaire d'hier (2014-09-04), était TOTALement raison: le chèque du $ ne peut pas être à l'intérieur de l'événement prêt de Jquery, parce que nous supposons, comme il l'a souligné, que $ est déjà défini. MERCI D'AVOIR INDIQUÉ CELA, et veuillez faire plaisir au reste d'entre vous, corrigez cela, si vous l'avez utilisé dans vos scripts. Ma suggestion est: dans vos bibliothèques, mettez une fonction "install_script ()" qui initialise la bibliothèque (mettez toute référence à $ à l'intérieur de cette fonction init, y compris la déclaration de ready ()) et AU DÉBUT de cette fonction "install_script ()" , vérifiez si le $ est défini, mais rendez tout indépendant de JQuery, afin que votre bibliothèque puisse se "diagnostiquer" lorsque JQuery n'est pas encore défini. Je préfère cette méthode plutôt que de forcer la création automatique d'un JQuery en l'apportant à partir d'un CDN. Ce sont de minuscules notes de côté pour aider d'autres programmeurs. Je pense que les gens qui font des bibliothèques doivent être plus riches dans les retours sur les erreurs des programmeurs potentiels. Par exemple, Google Apis a besoin d'un manuel supplémentaire pour comprendre les messages d'erreur. C'est absurde, d'avoir besoin d'une documentation externe pour quelques petites erreurs qui ne nécessitent pas que vous alliez chercher un manuel ou une spécification. La bibliothèque doit être AUTO-DOCUMENTEE. J'écris du code même en prenant soin des erreurs que je pourrais commettre dans six mois à partir de maintenant, et il essaie toujours d'être un code propre et non répétitif, déjà écrit pour éviter les futures erreurs de développement. Je pense que les gens qui font des bibliothèques doivent être plus riches dans les retours sur les erreurs des programmeurs potentiels. Par exemple, Google Apis a besoin d'un manuel supplémentaire pour comprendre les messages d'erreur. C'est absurde, d'avoir besoin d'une documentation externe pour quelques petites erreurs qui ne nécessitent pas que vous alliez chercher un manuel ou une spécification. La bibliothèque doit être AUTO-DOCUMENTEE. J'écris du code même en prenant soin des erreurs que je pourrais commettre dans six mois à partir de maintenant, et il essaie toujours d'être un code propre et non répétitif, déjà écrit pour empêcher les futures erreurs de développement. Je pense que les gens qui font des bibliothèques doivent être plus riches dans les retours sur les erreurs des programmeurs potentiels. Par exemple, Google Apis a besoin d'un manuel supplémentaire pour comprendre les messages d'erreur. C'est absurde, d'avoir besoin d'une documentation externe pour quelques petites erreurs qui ne nécessitent pas que vous alliez chercher un manuel ou une spécification. La bibliothèque doit être AUTO-DOCUMENTEE. J'écris du code même en prenant soin des erreurs que je pourrais commettre dans six mois à partir de maintenant, et il essaie toujours d'être un code propre et non répétitif, déjà écrit pour empêcher les futures erreurs de développement. Vous n'avez pas besoin d'aller chercher un manuel ou une spécification. La bibliothèque doit être AUTO-DOCUMENTEE. J'écris du code même en prenant soin des erreurs que je pourrais commettre dans six mois à partir de maintenant, et il essaie toujours d'être un code propre et non répétitif, déjà écrit pour empêcher les futures erreurs de développement. Vous n'avez pas besoin d'aller chercher un manuel ou une spécification. La bibliothèque doit être AUTO-DOCUMENTEE. J'écris du code même en prenant soin des erreurs que je pourrais commettre dans six mois à partir de maintenant, et il essaie toujours d'être un code propre et non répétitif, déjà écrit pour empêcher les futures erreurs de développement.