evenements javascript

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : evenements javascript

Re: evenements javascript

par jojolapine » 19 août 2010, 10:50

Par curiosité, quelle solution as-tu retenu?
On peut voir le code final?

Re: evenements javascript

par Invité » 19 août 2010, 10:49

tout va beaucoup mieux, merci beaucoup pour ton aide

Re: evenements javascript

par jojolapine » 18 août 2010, 10:11

ok, j'ai rajouté le return 'pause' dans la fonction, mais comment je récupère cette valeur?

alert(threeSixtyPlayer.events.pause);

me renvoie toujours tout le code de la fonction qui a été déclenchée, plutôt que la valeur retournée par la fonction en question.
Et si tu faits cela:

Code : Tout sélectionner

alert(threeSixtyPlayer.events.pause());//rajout de parenthèses
ou encore celà:

Code : Tout sélectionner

var funcName = threeSixtyPlayer.events.pause();//rajout de parenthèses alert(funcName);
?

Re: evenements javascript

par jojolapine » 18 août 2010, 10:05

Je ne sais pas su tout si ce genre de chose est possible...
Après je n'arrive toujours pas à saisir l'intérêt de ta démarche...
étant donné que l'on sait quelle fonction est appelée, puisque tu l'écris "en dur"...?

une autre manière de faire si tu veux conserver les return pour une autre utilisation:

Code : Tout sélectionner

function ThreeSixtyPlayer() { //initialisation de divers paramètres var self = this; var pl = this; var sm = soundManager; // soundManager instance var isIE = (navigator.userAgent.match(/msie/i)); var this.lastFunctionCalled = ''; this.getLastFunctionCalled = function(){ return this.lastFunctionCalled; } //... play: function() { pl.removeClass(this._360data.oUIBox,this._360data.className); this._360data.className = pl.css.sPlaying; pl.addClass(this._360data.oUIBox,this._360data.className); self.fanOut(this); this.lastFunctionCalled = 'play'; },

Re: evenements javascript

par Invité » 18 août 2010, 10:03

ok, j'ai rajouté le return 'pause' dans la fonction, mais comment je récupère cette valeur?

alert(threeSixtyPlayer.events.pause);

me renvoie toujours tout le code de la fonction qui a été déclenchée, plutôt que la valeur retournée par la fonction en question.

Re: evenements javascript

par Invité » 18 août 2010, 09:58

Ben oui, suis-je bête...je pense que cette solution conviendra, merci encore
Donc si j'ai bien compris, il n'existe pas de solution simple pour récupérer le nom d'une fonction ou d'un événement qui vient d'être exécuté?

Re: evenements javascript

par jojolapine » 18 août 2010, 09:51

bonjour,
pourquoi ne pas donner une valeur de retour à tes méthodes?
genre:

Code : Tout sélectionner

play: function() { pl.removeClass(this._360data.oUIBox,this._360data.className); this._360data.className = pl.css.sPlaying; pl.addClass(this._360data.oUIBox,this._360data.className); self.fanOut(this); return 'play'; },

Re: evenements javascript

par Invité » 18 août 2010, 09:48

Bonjour,

Merci beaucoup pour cette réponse rapide.
Voici un aperçu complet de la structure de la classe. Il n'y a pas tout, juste des morceaux représentatifs pour voir comment la classe est constituée:
function ThreeSixtyPlayer() {
//initialisation de divers paramètres
  var self = this;
  var pl = this;
  var sm = soundManager; // soundManager instance
  var isIE = (navigator.userAgent.match(/msie/i));

  this.links = [];
  this.sounds = [];
  this.soundsByURL = [];

  this.config = {

    playNext: false,   // stop after one sound, or play through list until end
    autoPlay: false,   // start playing the first sound right away
    loadRingColor: '#bbbbbb', // how much has loaded
}

//définition de méthodes diverses
  this.addEventHandler = function(o,evtName,evtHandler) {
    typeof(attachEvent)=='undefined'?o.addEventListener(evtName,evtHandler,false):o.attachEvent('on'+evtName,evtHandler);
  }

  this.removeEventHandler = function(o,evtName,evtHandler) {
    typeof(attachEvent)=='undefined'?o.removeEventListener(evtName,evtHandler,false):o.detachEvent('on'+evtName,evtHandler);
  }

  this.hasClass = function(o,cStr) {
	return (typeof(o.className)!='undefined'?o.className.match(new RegExp('(\\s|^)'+cStr+'(\\s|$)')):false);
  }

  this.addClass = function(o,cStr) {
    if (!o || !cStr || self.hasClass(o,cStr)) return false;
    o.className = (o.className?o.className+' ':'')+cStr;
  }

  this.removeClass = function(o,cStr) {
    if (!o || !cStr || !self.hasClass(o,cStr)) return false;
    o.className = o.className.replace(new RegExp('( '+cStr+')|('+cStr+')','g'),'');
  }

//définition d'événements (extrait identique au post précédent
  this.events = {

    // handlers for sound events as they're started/stopped/played

    play: function() {
      pl.removeClass(this._360data.oUIBox,this._360data.className);
      this._360data.className = pl.css.sPlaying;
      pl.addClass(this._360data.oUIBox,this._360data.className);
	  self.fanOut(this);
    },

    stop: function() {
      pl.removeClass(this._360data.oUIBox,this._360data.className);
      this._360data.className = '';
	  self.fanIn(this);
    },

    this.init = function() {
      /**** code d'initialisation ***/
   }
}


Et pour utiliser cette classe, je fais ceci:
    //instanciation de la classe
    threeSixtyPlayer.init();

    //bouton qui déclenche les événements
    $('.p_playerbutton').click(function(){

		alert(threeSixtyPlayer.events.pause); //mon test qui affiche bien la fonction de l'événement délcenché. Je cherche à afficher le nom de la fonction plutôt que le contenu de la fonction

   });

Re: evenements javascript

par jojolapine » 18 août 2010, 09:36

Bonjour,
comment sont appelées les méthodes de ta classe?
Et à quelle endroit souhaite tu savoir celle qui a été appelée

evenements javascript

par Invité » 18 août 2010, 09:23

Bonjour,

Je travaille dans une classe javascript assez complexe, je vais essayer de ne montrer que l'essentiel pour ma question.
La classe en question définit une liste d'événements comme ceci:
  this.events = {

    // handlers for sound events as they're started/stopped/played

    play: function() {
      pl.removeClass(this._360data.oUIBox,this._360data.className);
      this._360data.className = pl.css.sPlaying;
      pl.addClass(this._360data.oUIBox,this._360data.className);
	  self.fanOut(this);
    },

    stop: function() {
      pl.removeClass(this._360data.oUIBox,this._360data.className);
      this._360data.className = '';
	  self.fanIn(this);
    },

    pause: function() {
      pl.removeClass(this._360data.oUIBox,this._360data.className);
      this._360data.className = pl.css.sPaused;
      pl.addClass(this._360data.oUIBox,this._360data.className);
    },

    resume: function() {
      pl.removeClass(this._360data.oUIBox,this._360data.className);
      this._360data.className = pl.css.sPlaying;
      pl.addClass(this._360data.oUIBox,this._360data.className);      
    },

    finish: function() {
      pl.removeClass(this._360data.oUIBox,this._360data.className);
      this._360data.className = '';
      // self.clearCanvas(this._360data.oCanvas);
      this._360data.didFinish = true; // so fan draws full circle
	  self.fanIn(this);
      if (pl.config.playNext) {
        var nextLink = (pl.indexByURL[this._360data.oLink.href]+1);
        if (nextLink<pl.links.length) {
          pl.handleClick({'target':pl.links[nextLink]});
        }
      }
    },
Ces événements se déclenchent quand on clique sur un bouton et ça fonctionne très bien.
Après avoir créé un objet à partir de cette classe, lorsqu'on clique sur le bouton, la fonction de l'événement déclenché s'affiche

Exemple:
alert(MonObjet.events.pause);
m'affiche bien la fonction qui a été exécutée:

function() {
pl.removeClass(this._360data.oUIBox,this._360data.className);
this._360data.className = pl.css.sPaused;
pl.addClass(this._360data.oUIBox,this._360data.className);
}

Ma question: comment détecter le nom de l'événement qui a été déclenché, au lieu d'en afficher la fonction?
En gros, comment savoir si l'événement est play, stop, finish...

Merci pour vos réponses