11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous, j'aurais besoin d'un petit coup de main : J'ai souvent entendu dire qu'il fallait éviter d'utiliser les iframes et préférer l'utilisations de <div>, ce que je fais donc avec succès depuis un certain temps.
Seulement voilà, je viens de faire un petit script de chatroom en ajax+php, avec un <div> dans lequel j'affiche la liste des messages. Je lui ai mis un "overflow: auto" pour qu'une barre de défilement apparaisse quand il y a trop de messages, et maintenant je voudrais qu'à chaque fois qu'un nouveau message arrive, ce div scroll pour se mettre tout en bas, et ainsi afficher le dernier message.

Que du très classique finalement, et je me suis joyeusement lancé avec la méthode scrollBy(), que j'avais déjà utilisé sans problème pour faire défiler des pages.
Et là stupeur : La méthode scrollBy n'existe pas pour les <div>s !!! elle n'existe apparemment que pour les fenêtres et les frames/i-frames !

Existe-t-il un moyen de parvenir à mes fins en conservant mon div ? ou dois-je utiliser une i-frame ?

merci Smiley smile
Modifié par BlueScreenJunky (29 May 2007 - 19:05)
il suffit de fixer la taille de la div (hauteur) et mettre un 'overflow:auto' dans les proriété CSS de cette div ^^
Non.






Si tu relis mon message tu verra que je l'ai déjà fait :
BlueScreenJunky a écrit :
Je lui ai mis un "overflow: auto" pour qu'une barre de défilement apparaisse quand il y a trop de messages, et maintenant je voudrais qu'à chaque fois qu'un nouveau message arrive, ce div scroll pour se mettre tout en bas, et ainsi afficher le dernier message.

Ce que je veux, c'est faire défiler mon <div> automatiquement, genre mondiv.scrollBy(0,100px) à chaque fois qu'un message arrive. Là pour l'instant la barre de défilement apparait bien, mais c'est à l'utilisateur de cliquer dessus pour lire la suite à chaque fois... pas très pratique Smiley lol

PS : mais merci d'avoir répondu.
Modifié par BlueScreenJunky (27 May 2007 - 17:14)
Salut,
tu devrais aller faire un tour sur mootools.net. Dans la librairie y il a une méthode permettant de faire scroller à peu près n'importe quoi dont des divs et ce sur n'importe quel type d'événement. En jetant un oeil au source de la feuille non-compressée, tu devrais bien trouver une réponse à ta question Smiley cligne

have swing
Shinuza -> Tu es sur que les divs ont la méthode scrollTo() ? Ca me paraitrait bizarre que scrollTo() existe et pas scrollBy()...

edit : soit ça n'existe pas, soit je m'y prends mal. J'ai mon <div id="contenu">, et quand j'essaye de faire document.getElementById("contenu").scrollTo(0,200) on me répond document.getElementById("contenu").scrollTo is not a function


Virtualgadjo -> merci, je vais peut-être chercher par là, mais si quelqu'un peut me dépanner je suis toujours preneur ^^;
Modifié par BlueScreenJunky (27 May 2007 - 17:38)
Shinuza tu mérites plein de gros bisous ! C'est exactement ce qu'il me fallait et j'en ignorais totalement l'existence !

merci merci merci merci ! =)
virtualgadjo a écrit :
Salut,
tu devrais aller faire un tour sur mootools.net. Dans la librairie y il a une méthode permettant de faire scroller à peu près n'importe quoi dont des divs et ce sur n'importe quel type d'événement. En jetant un oeil au source de la feuille non-compressée, tu devrais bien trouver une réponse à ta question Smiley cligne

have swing

Ouais faire appel à une librairie juste pour scroller un élément Smiley biggol
document.getElementById("contenu").scrollTop = 8000;


==>>>>>
var elm = document.getElementById("contenu")
elm.scrollTop = elm.scrollHeight;
^^;

ouip, beaucoup plus propre comme ça, j'avais mis une constante pour tester, mais j'avoue que c'est le genre de temporaire qui peut rester des années avec moi =)