11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,
je fouille depuis un certain temps, peut-être pas au bon endroit (?) sans trouver la réponse :

Peut-on appeler plusieurs fonctions depuis window.onresize.

Note : d'une part, je n'utilise pas l'attribut onresize dans la balise body, sinon la question serait résolue, d'autre part, je me demande si une autre partie de ma page utilisant également window.onresize n'écrase pas la première valeur, ce qui expliquerait que la seconde fonctionne parfaitement, mais pas la première ?

Un piste vers la solution ?

[Edit]Finalement, je vais devoir modifier le second appel.

Je me suis livré à l'expérience suivante :
  function a1()
  {
      alert('Appel de la fonction a1()');
  }
  function a2()
  {
      alert('Appel de la fonction a2()');
  }
  window.onresize = a1;
  window.onresize = a2;

Le résultat est très simple : comme je l'ai soupçonné, le second appel écrase la première valeur. Donc je vais devoir intégrer l'appel à la première fonction dans l'exécution de la seconde. Ce qui donne :
  function a1()
  {
      alert('Appel de la fonction a1()');
  }
  function a2()
  {
      a1();
      alert('Appel de la fonction a2()');
  }
  window.onresize = a2;

Et là mes deux fonctions sont correctement exécutées.

Je reste ouvert aux autres solution, en particulier si quelqu'un connait une syntaxe spécifique pour un appel multiple. Smiley smile
[/Edit]
Modifié par Cyrano (21 Jun 2007 - 11:44)
Modérateur
Hello,

Comme ceci :
var oO =
{
   connect: function(oElem, sEvType, fn, bCapture)
   {
	return document.addEventListener ?
		oElem.addEventListener(sEvType, fn, bCapture):
		oElem.attachEvent ?
			oElem.attachEvent('on' + sEvType, fn):
			false;
   },

   a1: function()
   {
      alert('Appel de la fonction a1()');
   },

   a2: function()
   {
      alert('Appel de la fonction a2()');
   }
};

oO.connect(window, 'resize', oO.a1, false);
oO.connect(window, 'resize', oO.a2, false);
Seule la gestion des événements de type DOM2 permet les appels multiples tels que tu le cherches.

Voir ici Smiley cligne :
http://css.alsacreations.com/Tutoriels-JavaScript/La-gestion-des-evenements-en-JavaScript
http://gilles.chagnon.free.fr/cours/dhtml/evenements.html
Pas inintéressant, loin de là, je vais même garder ça dans un coin, mais peut-être un peu lourd pour mon besoin.

En pratique, j'ai un (gros) site de e-commerce et j'utilisais déjà un gestionnaire onresize pour gérer la position d'un panier dans pratiquement toutes mes pages (C'est lui qui écrasait ma nouvelle valeur). Là, j'ai un problème de mise en forme pour une page spécifique exclusivement sous IE. Donc j'ai créé un petit JavaScript pour corriger dynamiquement cette mise en forme boîteuse, mais restait à gérer les modification de dimension de fenêtre.

Alors ce que j'ai fait, c'est que, comme j'ai un fichier PHP pour me générer un bout de JavaScript pour certaines variables particulières, il me restait à ajouter une autre variable booléenne m'indiquant si j'étais dans ladite page ou pas : le cas échéant, je n'avais qu'à ajouter une ligne dans la fonction qui gère la position de mon panier.

Et là, tout fonctionne comme sur des roulettes Smiley smile

Voilà, encore merci.
Réflexion faite, je crois que je vais adopter la méthode que tu suggères. J'ai un peu fouillé la doc JavaScript et cette manière de faire ne compliquerait en rien mon système, j'irai même jusqu'à dire que ça simplifierait pas mal en ajoutant un fonctionnement plus sûr.

Je ne suis pas du tout familier avec cette syntaxe et la POO JavaScript en général. Mais à l'usage, c'est vrai que ça vaut la peine de se plonger un peu dedans.

Encore mille mercis @+
Cyrano Smiley biggrin