11548 sujets

JavaScript, DOM et API Web HTML5

Comment détecter sur IE que le <body> change de taille (scroll vertical) lorsqu'un objet du body passe de l'état style.block = 'none'; à style.block= 'block';

document.body.onresize ne donne rien
QuentinC a écrit :
Bonjour, peut-êttre onpropertychange, mais pas sûr


J'ai essayé mais sans succès
Bonjour.

onpropertychange était une bonne idée, mais ne permet pas de détecter une modification de hauteur de body.

Pour contourner le problème, je me pose la question quel est l'évenement qui aboutit à la modification de hauteur de body.

Le passage de block=none à block='block' se produit au chargement, c'est donc onload qui est à utiliser.

Après le chargement, la modification peut-être due à un évenement utilisateur, et c'est cet évenement qui est à utiliser...

J'espère que vous voyez ce que je veux dire: se caler sur ce qui déclenche la modification de hauteur.
Modifié par GeorgesM (09 Sep 2005 - 17:54)
GeorgesM a écrit :
Bonjour.

onpropertychange était une bonne idée, mais ne permet pas de détecter une modification de hauteur de body.

Pour contourner le problème, je me pose la question quel est l'évenement qui aboutit à la modification de hauteur de body.

Le passage de block=none à block='block' se produit au chargement, c'est donc onload qui est à utiliser.

Après le chargement, la modification peut-être due à un évenement utilisateur, et c'est cet évenement qui est à utiliser...

J'espère que vous voyez ce que je veux dire: se caler sur ce qui déclenche la modification de hauteur.


c'est bien après le chargement. Toutefois, je ne peux pas me caler sur l'objet qui provoque l'événement car il y a une multitude de cas possibles ce qui reviendrait à instrumenter chaque cas. Trop lourd.
On avance...

Est-ce que ces multiples d'objets déclenchent le même evenement?
Je dis ça parce que sous ie on centralise facilement en interceptant l'évenement...

// Interception des évennements
document.onclick = analyse;

function analyse() 
{
n = window.event.srcElement;

if (n.id== "BonId")
{
Action()
}
}

Modifié par GeorgesM (09 Sep 2005 - 18:22)
GeorgesM a écrit :
On avance...

Est-ce que ces multiples d'objets déclenchent le même evenement?
Je dis ça parce que sous ie on centralise facilement en interceptant l'évenement...

// Interception des évennements
document.onclick = analyse;

function analyse() 
{
n = window.event.srcElement;

if (n.id== "BonId")
{
Action()
}
}



C'est une piste en effet, le problème c'est que l'événement n'est pas forcément un onclick mais peut-être également le chargement d'un objet dans la page qui vient s'insérer dans la page (XMLhttpRequest). C'est un peu différent du problème originel mais j'ai voulu simplifier pour être bien compris.
A chaque fois qu'un élément est affiché/masqué, tu le sais non ? tu dois cetainement utiliser une fonction non ? eh ben tu le mets dans ta fonction ... non ?
rickman a écrit :
Comment détecter sur IE que le <body> change de taille (scroll vertical)

scrollVertical=(document.documentElement.scrollTop 
// en mode standard
|| document.body.scrollTop) 
// en mode quirk

à inclure dans la fonction de contrôle comme l'a précisé QuentinC
Administrateur
Bonjour,

ce n'est pas toujours facile de donner un titre à un sujet mais "problème ardu" est assez peu descriptif Smiley cligne Si tu trouves mieux, n'héiste pas à éditer Smiley smile

Felipe
et pour savoir la hauteur totale
c'est document.body.scrollHeight
ou document.documentElement.scrollHeight si tu es en XHTML 1.0 strict ou transitional (en raison d'un bug de IE)
QuentinC a écrit :
A chaque fois qu'un élément est affiché/masqué, tu le sais non ? tu dois cetainement utiliser une fonction non ? eh ben tu le mets dans ta fonction ... non ?


Je ne veux pas instrumenter chaque cas car ils sont nombreux et je ne trouve pas cela élégant.
Bon de toute façon, j'ai trouvé la solution en insérant une balise <div id="container" style="zoom: 1;"> juste après <body> et gérant l'événement container.onresize = function(){ ...};.