Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment eviter de repeter une fonction Javascript

Exemple: Le bbcode...

Sujet résolu
    3 octobre 2008 à 22:04:28

    Bonjour à tous,

    (Très bonne idée ce forum js)...

    Je voudrais savoir quelquechose
    J'ai une page disons, index.php qui contient 6 lightbox, donc la source des lightbox est dans index.php, et chaque lightbox contient un textarea...
    Chaque textearea est muni d'un bbcode, dont le javascript pose probleme car : comme le javascript envoi la balise ou l'emoticone dans le textarea "news", hé bien si je les apppellent tous news, lorsque je cliquerais sur le bbcode de la 6 eme lightbox, ce sera le premier textarea qui sera remplie... Logique :D

    Bref, je voudrais savoir comment eviter de recopier la function javascript bbcode autant de fois qu'il y a de texteare...

    <script language="Javascript">
    var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
    var regexp = new RegExp("[\r]","gi");
    
    function storeCaret(selec)
    {
    	if (isMozilla) 
    	{
    	// Si on est sur Mozilla
    
    		oField = document.forms['news'].elements['refs'];
    
    		objectValue = oField.value;
    
    		deb = oField.selectionStart;
    		fin = oField.selectionEnd;
    
    		objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
    		objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
    		objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
    
    	//	alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
    			
    		oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
    		oField.selectionStart = strlen(objectValueDeb);
    		oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
    		oField.focus();
    		oField.setSelectionRange(
    			objectValueDeb.length + selec.length + 2,
    			objectValueDeb.length + selec.length + 2);
    	}
    	else
    	{
    	// Si on est sur IE
    		
    		oField = document.forms['news'].elements['refs'];
    		var str = document.selection.createRange().text;
    
    		if (str.length>0)
    		{
    		// Si on a selectionné du texte
    			var sel = document.selection.createRange();
    			sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
    			sel.collapse();
    			sel.select();
    		}
    		else
    		{
    			oField.focus(oField.caretPos);
    		//	alert(oField.caretPos+"\n"+oField.value.length+"\n")
    			oField.focus(oField.value.length);
    			oField.caretPos = document.selection.createRange().duplicate();
    			
    			var bidon = "%~%";
    			var orig = oField.value;
    			oField.caretPos.text = bidon;
    			var i = oField.value.search(bidon);
    			oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
    //Gestion des retours chariots sous IE
    var temp = orig.substr(0,i);
    var nbretour =0;
    for (var cpt=0;cpt<temp.length;cpt=cpt+1)
    {
    if(temp.charAt(cpt)=="\n")
    {
    nbretour=nbretour+1;
    }
    }
    //Prise en compte des retour chariots dans le placement du curseur
    pos = i + 2 + selec.length - nbretour;
    			//placer(document.forms['news'].elements['refs'], pos);
    			var r = oField.createTextRange();
    			r.moveStart('character', pos);
    			r.collapse();
    			r.select();
    
    		}
    	}
    }
    </script>
    <script language="Javascript">
    function smilies(img)
    {
    window.document.news.refs.value += ' ' + img + ' ';
    }
    </script>
    


    MERCI D'avance
    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2008 à 22:49:59

      Tu mets tout dans un fichier (par exemple, bbcode.js), et tu fais un <script type="text/javascript" src="bbcode.js"></script> sur chaque page qui doit exploiter tes fonctions JS ;)
      • Partager sur Facebook
      • Partager sur Twitter
        3 octobre 2008 à 22:51:54

        Salut,

        Merci mais le probleme c'ets que ce sont des lightbox --> Principe des lightbox, tout les contenus sur la meme page donc comment faire pour changer en quelque sorte le nom du textarea auquel le bbcode doit s'affecter ?
        • Partager sur Facebook
        • Partager sur Twitter
          3 octobre 2008 à 23:25:07

          Ben, un petit passage de parametres..., Ou tu indiques l'id / le nom du textarea à remplir.
          • Partager sur Facebook
          • Partager sur Twitter
          Mon profil Github - Zeste de Savoir, pour la beauté du zeste
            4 octobre 2008 à 9:13:15

            Ou this plus simplement ^^ .

            Sinon tu peux aussi jouer avec les class au lieu de jouer avec les id ;) .
            • Partager sur Facebook
            • Partager sur Twitter
              4 octobre 2008 à 12:50:35

              Euh j'ai oublié de precisé que je n'y connaissait rien en javascript :D

              Quelqu'un peut m'aider please :)
              • Partager sur Facebook
              • Partager sur Twitter
                4 octobre 2008 à 13:13:33

                Attonde > Pourquoi se faire chier avec this ? Surtout qu'on est pas forcemment dans le textarea... Mais sur un autre bouton, p-ê !

                sdz-amnia > Simple, pour ta fonction de bbcode, tu met quel est le nom / l'id du textarea concerné, c'est tout...
                • Partager sur Facebook
                • Partager sur Twitter
                Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                  4 octobre 2008 à 13:23:17

                  Oui mais ça veut dire que je dois repeter le code javascript autant de fois qu'il y a de textarea, car les textarea sont sur la meme page :(

                  Y'a-til une autre solution ?

                  Merci en tout cas :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 octobre 2008 à 14:50:18

                    Bah... Non ! D'ou le passage en parametre !

                    Tu ne fais la fonction qu'une seule fois, et tu appelles la fonction, en spécifiant l'id du textarea concerné... C'est tout !
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                      4 octobre 2008 à 22:21:23

                      En fait c'est autrement qu'il faut poser le problème.

                      T'y connais rien au javascript ? Le script est pas de toi.. T'arriveras pas à le modifier... Donc tu répètes le code !

                      Sinon tu vas apprendre le javascript ^^ .


                      On peut pas développer plus nos idées...


                      Sinon pour le this, je propose simplement, je propose :lol: .
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 octobre 2008 à 23:11:47

                        Merci à vous deux,

                        Je vois le principe de la fonction, ça me semble accessible facilement :)

                        Pour ce qui ets du javascript je vais m'y mettre en effet car ça semble incontournable :/
                        Quelqu'un pourrait-t-il em faire une rapide presentation de l'ajax ?

                        Merci en tout cas à vous deux
                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 octobre 2008 à 23:58:04

                          Bien sûr ;) .
                          L'ajax est simplement l'assemblage du PHP et du Javascript.

                          Par exemple un script JS généré par PHP peut être considéré d'ajax (bon c'est pas forcément ce qu'on voit le plus quand on parle d'ajax).

                          Le principe en général c'est d'exécuter du php après le chargement de la page en fonction des actions du visiteur. On peut le coupler au DHTML (bouger les éléments avec javascript) ça fait des trucs sympa ^^ .


                          Le meilleur tuto du net est par là:
                          http://www.siteduzero.com/tutoriel-3-4 [...] vascript.html
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 octobre 2008 à 0:42:02

                            Citation : Attonde

                            Bien sûr ;) .
                            L'ajax est simplement l'assemblage du PHP et du Javascript.



                            Faux. Ce n'est pas le mélange du PHP et du Javascript... C'est une sorte de "connexion" asynchrone (donc de deux evenements n'agissant pas en même temps) entre le Javascript et l'XML... On l'utilise souvent avec PHP, mais l'erreur est de dire "AJaX == PHP + JS". Grâce à l'AJaX, tu peux ainsi faire communiquer ton navigateur avec le serveur (qui a déjà renvoyé la page), pour après faire joujou avec ce que le serveur te renvoi.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                              5 octobre 2008 à 9:24:10

                              Merci enocre à vous deux, ces deux languages semblent très puissant, je vais donc m'y mettre.

                              A bientot :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                5 octobre 2008 à 21:12:18

                                Citation : sdz-mania

                                Merci enocre à vous deux, ces deux languges semblent très puissant, je vais donc m'y mettre.
                                A bientot :)



                                Petite rectification au passage : l'Ajax n'est pas un "langage". L'Ajax est juste un assemblage de fonctions en JavaScript utilisant les objets XMLHttpRequest (ou autres suivant le navigateur) permettant d'appeler une page en arrière-plan en lui envoyant des données par méthode GET ou POST, puis de traiter la réponse que renvoi la page appelée ;)

                                PS : Ajax = 150% JavaScript ;)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 octobre 2008 à 21:22:10

                                  Pas forcément XMLHttpRequest... :-°

                                  @Talus: Effectivement c'est plutôt l'assemblage du langage serveur (qui est très souvent le PHP, on est d'accord non ?) et du javascript.

                                  Ajax sans le fameux langage serveur = false surtout ouai..

                                  Bref ce débat est un peu inutile, on a tous compris ce que c'était dans le fond ^^ .
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 octobre 2008 à 21:24:57

                                    Citation : Attonde

                                    Pas forcément XMLHttpRequest... :-°
                                    [...]
                                    Bref ce débat est un peu inutile, on a tous compris ce que c'était dans le fond ^^ .



                                    C'est ce que j'ai dis plus haut, l'objet dépend du navigateur ;)

                                    Et pour le débat, il faut bien qu'on se mette d'accord car sdz-mania doit se faire une vraie idée de l'Ajax ;)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 octobre 2008 à 21:29:04

                                      Oui.. Non.

                                      Il y a d'autres façons d'utiliser ajax que le fameux "xhr" ;) .

                                      Voir ici en fait ;) .

                                      En fait pour faire simple l'ajax c'est la communication serveur-client sans rechargement de la page à l'aide de javascript. (on va y arriver :D )
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        5 octobre 2008 à 22:05:05

                                        :D J'ai tout compris :)

                                        Je n'oses plus vous demander ce qu'est l'actionscript o_O

                                        xD :)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          5 octobre 2008 à 22:38:42

                                          Lol.

                                          L'actionscript c'est le langage qui permet de programmer les animations flash ;) .
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            5 octobre 2008 à 23:15:39

                                            Ok bah pendant qu'on y est, y'a des notions de designs... Enfin je veux dire faut toucher à photoshop pour les animations flashs... C'ets quoi en gros ?
                                            :)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              6 octobre 2008 à 18:15:38

                                              Pour créer des animations Flash, il faut le logiciel Adobe Flash (coute très cher) car la technologie utilisée (ActionScript) est propriétaire d'Adobe (anciennement macromedia).

                                              Le logiciel Adobe Photoshop n'a rien à voir, il permet juste de retoucher des photos (ce logiciel coute aussi très cher :p )

                                              Donc pour résumer :
                                              • Adobe Flash (836 € TTC) : créer des animations Flash utilisant le langage ActionScript
                                              • Adobe Photoshop (1 015 € TTC) : retoucher des photos

                                              PS : il se peut que je me sois trompé dans les prix, mais en gros c'est ça :p
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                6 octobre 2008 à 18:55:10

                                                Soit pas si défaitiste :D .
                                                Il existe une technique open source pour compiler l'actionscript 3, mais c'est gore... et puis gimp saibien :p .
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  6 octobre 2008 à 19:40:01

                                                  Merci mais j'ai photososhop enfaite c'ets pas la question... :p

                                                  C'était juste histoire de savoir si il faisait appelle à du design brut... :)

                                                  Merci pour tout
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    6 octobre 2008 à 19:51:35

                                                    Bah il est conseillé de toucher photoshop the gimp quand même pour les appli flash :-° ... Sinon on est vite limité !
                                                    Bon c'est pas du grand art demandé ^^ .

                                                    (sauf peut-être avec flex)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      6 octobre 2008 à 21:23:10

                                                      D'accord merci pour tout :) j'ai tout ce qu'il me faut :p
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        6 octobre 2008 à 21:26:02

                                                        Citation : Attonde

                                                        Il existe une technique open source pour compiler l'actionscript 3, mais c'est gore... et puis gimp saibien :p .



                                                        Si tu n'as pas acheté au préalable je-ne-sais-plus-trop-quoi auprès d'Adobe c'est illégal ;)
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          8 octobre 2008 à 18:12:31

                                                          Citation : Attonde

                                                          http://www.siteduzero.com/tutoriel-3-3 [...] ws-linux.html
                                                          :euh: ... ?



                                                          Citation : Tuto

                                                          Vous avez Windows et l'IDE d'Adobe, mais la version de démonstration touche à sa fin et vous ne souhaitez pas débourser 800€ pour continuer à programmer ?



                                                          Il faut bien l'acheter et dès que la version a expiré, on peut utiliser la technique expliquée dans le tutoriel.

                                                          Bref je propose qu'on en arrête là pour l'ActionScript, si quelqu'un a des questions qu'il aille dans le forum Autres langages dans la partie Programmation parce que là ça part en cacahuètes :p
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            8 octobre 2008 à 18:43:17

                                                            Euh ouai faudrait arrêter c'est vrai mais là tu t'as mal lu, la version d'évaluation... Elle est gratuite ;) .

                                                            Donc vala :) .

                                                            Si tu veux continuer tous ces débats MP :lol: .
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Comment eviter de repeter une fonction Javascript

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown