2017-07-23 2 views
0

J'ai passé beaucoup de temps à prendre scrollheight correctement, mais toutes les actions ont échoué.Scrollheight pas obtenir la hauteur sur le contenu dynamique rendu thorugh ajax et n'a pas réussi à initier Slimscroll par le bas

Problème: 1- Face à problème pour récupérer scrollHeight sur le contenu dynamique rendu

2- slimscroll ne démarre pas à partir du bas.

charge contenu dynamique j'utiliser en temps opportun si scrollHeight avec slimscroll

3- position de départ Slimscroll de bas affects en raison de scrollHeight.

J'intègre slimscroll avec un conteneur système de discussion, tandis que le contenu récupère de ajax et insère (apppend) dans la zone de discussion. Je prends le scrollheight de ce conteneur. donc je peux lancer défilement (plugin slimscroll) à partir du bas,

mais a trouvé deux problèmes ici

1- slimscroll ne démarre pas à partir du bas sur le contenu dynamique.

2- scrollheight renvoie zéro juste après le rendu du contenu.

$.ajax({ // retrieve data request }).done(function (result) { 
$.each(data, function (index, value) { // markup concatenation done }) 
$(html).insertBefore('.message-center .chat-list .typing-status'); 

Alors je lance slimscroll code pour faire une action selon scrollHeight

var chatList = $('.message-center .chat-list'); 

    var scrollTo_int = chatList.prop('scrollHeight') + 'px'; 

    $('.chat-list').slimScroll({ 
     scrollTo : scrollTo_int, 
     height: '400', 
     start: 'bottom', 
     alwaysVisible: true 
    }); 

Mais scrollHeight me montre zéro, mais si j'attends 2 secondes et mettre ce code dans settimeout même code d'initialisation de slimscroll dans settimeout

// setTimeout(function() { 
       //  chatToBottom(); 
       // }, 2000); 

scrollHeight retou rn hauteur correcte et également slimscroll travail parfaitement. Je ne veux pas attendre ces deux secondes.

Pourquoi je suis Impossible d'obtenir scrollHeight même contenu a été rendu,

Si quelqu'un peut me suggérer une bonne façon comme:

1- Une méthode rappel attente jusqu'à ce que scrollHeight> 0 alors la fonction doit être lancée.

2- Je veux empêcher la fonction settimeout, pensais-je Si le contenu augmente, cela peut prendre 1 ou 2 secondes de plus. c'est ma pensée.

J'ai passé beaucoup de temps mais je n'ai pas réussi à résoudre ce problème. Votre suggestion pourrait m'aider.

Merci,

Répondre

0

scrollHeight hauteur de retour correctement et slimscroll montrent également défile de bas Si j'ouvre immédiatement pop-up après chargement de la page visibilité contextuelle complète ou ensemble caché au lieu d'aucun d'affichage..

Mon cas d'essai:

Pendant plus de temps pour se concentrer sur scrollHeight et slimscroll, je remarqué qu'il ya un problème avec pop-up qui est caché où Chat en direct rendu.

1- Lorsque j'affiche la discussion dans la zone de contenu, commencez par défiler depuis le bas, et également la hauteur de retour scrollheight supérieure à zéro.

Quand je montre le chat dans une fenêtre contextuelle:

2- Si je pop-up de chat immédiatement ouvert puis cas, le point-3 n'a pas et le chat correctement affiché et la hauteur de défilement retour aussi supérieur à zéro

3- La fenêtre contextuelle du chat n'est pas ouverte immédiatement, de sorte que la zone de discussion affiche scrollheight zéro et que slimscroll commence par le haut.

Maintenant, je dois mettre logique que si l'utilisateur pop-up ouvert pour montrer le chat du bas et également Si l'utilisateur cacher la fenêtre contextuelle entre début de chat à partir de là où l'arrêt de l'utilisateur.

De toute façon merci qui voient cette question, maintenant je travaille sur d'autres scénarios.