La détection de présence de la barre de défilement avec jQuery encore difficile?
Je sais que la détection de présence de la barre de défilement est censé être l'un de ces insaisissables choses que nous devrions tous avoir à souffrir. Ce que j'ai lu jusqu'à présent est que vous ne pouvez pas vraiment détecter la présence de la barre de défilement, seule l'utilisation des indicateurs dans le DOM pour savoir si ils peut être présent, et il ne peut pas être fait en moins de 30 lignes de code.
Cela semble un peu impossible pour moi maintenant que nous sommes en 2010. N'jQuery avoir un cross-browser est la solution fiable qui prend en charge ce et fonctionne la plupart du temps? Toute aide, s'il vous plaît, je suis en tirant mes cheveux, la moitié est déjà sur le sol.
- Cela peut être naïf, mais quel est le problème avec
var scrollbar_present = $(document).height > $(window).height()
? - Je n'ai pas creusé dans le jQuery de mise en œuvre de savoir ce que la vanille code javascript de cette seule ligne met en œuvre. Est-il possible que c'est tout ce dont j'ai besoin? Si c'est le standard de la façon dont c'est fait en jQuery, alors je vais l'utiliser pour vous. Quelqu'un a des objections à cette solution?
- Ok, je viens de tester
$(document).height > $(window).height()
et il me donne de faux, indépendamment de savoir si je vais voir des barres de défilement ou non. Donc je suppose que peut-être il ne fonctionne pas. - Désolé, il y avait une faute de frappe, version corrigée:
var scrollbar_present = $(document).height() > $(window).height()
. Fonctionne pour moi sur Safari. - stackoverflow.com/questions/2647761/...
InformationsquelleAutor donpal | 2010-04-03
Vous devez vous connecter pour publier un commentaire.
Probablement pas aussi élégant que vous espériez, mais c'est une adaptation d'un script que j'ai écrit récemment pour calculer la hauteur de la fenêtre d'affichage.
Logiquement vous voulez appeler cette fonction sur
document ready
etwindow resize
.Il traite également des incohérences que vous auriez rencontre à l'Opéra (ligne 2) et IE7 (ligne 6).
overflow: hidden
, ce qui pourrait empêcher une barre de défilement n'apparaissent.#wrapper
n'était pas l'élément avecoverflow: hidden
- dire qu'il a été enveloppé dans#outer-wrapper
et qui avaitoverflow: hidden
; ce ne serait pas#wrapper
hauteur de rester le même?return (viewportHeight <= $('#wrapper').height()) ? true : false;
je l'ai testé et si je reçois encore un faux, vous ne savez pas quel est le problème. Je pense que j'ai peut-être eu un javascript/jquery conflit quelque part ou je vais appeler ces fonctions de manière incorrecte.? true : false
, à la fin d'une certaine manière, je ne pouvais pas être pris la peine de vérifier mon syntaxe bien. Êtes-vous sûr que votre#wrapper
prend toute la hauteur de son contenu? Vous pourriez peut-être essayer un clearfix à la fin?return viewportHeight <= $('#wrapper').height()
, qui renvoie toujours true ou false, parce que< > == <= => !=
sont des opérateurs booléens.>=
mais pas=>
🙂