jQuery scrollTop () renvoie 0 pour tous les éléments
À mon travail, nous avons un site d'une page que j'ai créé avec AngularJS.
Nous sommes à l'aide de l'interface utilisateur-routeur plugin (version 0.2.0).
Récemment, j'ai remarqué que lors du passage d'un état à l'autre, la fenêtre n'est pas défiler vers le haut.
J'ai même essayé de la faire défiler vers le haut manuellement à l'aide de jQuery scrollTop()
fonction de chaque changement d'état (à l'aide de la $stateChangeSuccess
de l'événement). Mais il ne fonctionne pas.
J'ai donc commencé à enquêter, et j'ai remarqué que scrollTop()
est de retour 0 pour chaque élément de la page.
Non seulement cela, mais lorsque j'imprime le window.scrollY
à la console j'obtiens 0 (peu importe où je suis sur la page). Pas seulement dans mon code, mais même si je viens de l'écrire dans le chrome dev tools console.
J'ai écrit plusieurs applications avec AngularJS et ui-router, et il ne se produit que dans celui-ci en particulier.
J'ai vérifié pour voir si j'ai écrasé le scrollTop()
fonction ou window.scrollY
champ, mais n'ai rien trouvé.
J'ai essayé d'utiliser le ui-view
avec autoscroll="true"
et autoscroll="false"
mais il n'a pas fait une différence.
J'ai aussi essayé de donner le html
et la body
éléments height:100%
et j'ai également essayé sans. Mais rien.
Je ne sais vraiment pas quoi faire ensuite.
Je n'ai pas pu reproduire le problème, mais si vous pensez qu'il ya n'importe quel code je dois poster ici qui pourrait vous être d'une quelconque aide, je serai heureux de le faire.
Merci!
EDIT:
J'ai exécuter cette fonction sur la console:
var l = $('*').length;
for(var i = 0; i < l; i++) {
var elem = $('*:eq(' + i + ')');
if(elem.scrollTop() > 0) {
console.log(elem, elem.scrollTop());
}
}
La fonction imprimer un seul élément avec c'est top de défilement.
L'élément est un emballage div qui contient l'ensemble du contenu et de la vue principale (j'ai vues imbriquées dans mon application).
Si j'utilise scrollTop(0)
sur cet élément-je obtenir ce que je voulais, mais il ne traite que le symptôme, et non pas le vrai problème.
source d'informationauteur jonny bordo
Vous devez vous connecter pour publier un commentaire.
@Hans commenté, il n'était pas réellement un problème.
J'ai eu un élément d'habillage, qui a été placé
absolute
avec:De sorte que La fenêtre de
scrollTop
était toujours 0, et la barre de défilement appartenait en réalité à l'élément d'habillage.Car je ne pouvais pas me débarrasser de l'élément d'habillage de positionnement, j'ai utilisé l'interface utilisateur du routeur
$stateChangeSuccess
événement, et manuellement défiler l'élément d'habillage vers le haut.À partir de la console, essayez
Si la fenêtre.scrollY montre à 0, le cadre de référence ne doit pas être la fenêtre. Avez-vous une iframe sur la page? console.journal des trames afficher la liste des images sur la page.
Espérons que cela aide.
Mon code est-il arrivé ce problème aussi, et j'ai trouvé un body{overflow: hidden;} est la raison, j'ai supprimer "overflow: hidden;" et tout est bien.