[Fort Müller] take 3

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   -  
Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   -
Bonjour tout le monde :)

Bon j'ai eu l'occasion ces derniers temps de me pencher longuement sur XPFE, j'ai donc du me replonger dans le JavaScript, le DOM, et tout ce qui va avec, et j'ai trouver quelque chose qui résoud un petit probleme sous mozilla qui m'enerve assez fréquement.

Quand on utilise les boutons pour inserrer les balises de formatage, d'une part, le curseur se replace un peu ou il veut, d'autre part (plus génant) quand il y a un scroll dans le TEXTAREA, il remonte systematiquement tout en haut aprés l'insertion des balises...

En retouchant un tout petit peu, le bout de code incriminé:
...
{
  txtObj.value = txtObj.value.substr(0, txtObj.selectionStart) + Tag +
  txtObj.value.substr(txtObj.selectionStart, 
  txtObj.selectionEnd-txtObj.selectionStart) +
  closeTag + txtObj.value.substr(txtObj.selectionEnd);
}
...
de cette façon:
...
{
  // position du scroll
  oldPos = txtObj.scrollTop;        
  oldHght = txtObj.scrollHeight;

  // position du curseur
  pos = txtObj.selectionEnd + Tag.length + closeTag.length; 

  txtObj.value = txtObj.value.substr(0, txtObj.selectionStart) + Tag +
  txtObj.value.substr(txtObj.selectionStart,
  txtObj.selectionEnd-txtObj.selectionStart) +
  closeTag + txtObj.value.substr(txtObj.selectionEnd);

  // repositionnement cuseur aprés la balise fermante
  // peut être grandemant amélioré ;-)
  txtObj.selectionStart = pos; 
  txtObj.selectionEnd = pos;   

  // calcul et application de la nouvelle bonne postion du scroll
  newHght = txtObj.scrollHeight - oldHght; 
  txtObj.scrollTop = oldPos + newHght;
}
...
On obtient un comportement identique du javascript sur IE, et FireFox, j'ai pas poussé les teste trés loin, mais ça semble fonctionner plutot pas mal :)

@++
 ♫ Il suffirait de presque rien...

10 réponses

  1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    Au passage, j'en profite pour rajouter que ça serait pas mal que le TEXTAREA soit un peu plus grand en hauteur ;-)
     ♫ Il suffirait de presque rien...
    0
  2. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    Et en largeur :o)

    .  .  Ce post a été écrit entièrement
    \_/  avec des molécules recyclées
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      ha ?
      Moi ça me va la largeure :)
      par contre, un petit controle ActiveX pour lancer Word :)
       ♫ Il suffirait de presque rien...
      0
    2. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
       
      Arg non! Surtout pas, j'ai ce truc que sur mon PC de boulot et c'est deja trop pour moi :o)


      .  .  Ce post a été écrit entièrement
      \_/  avec des molécules recyclées
      0
      1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bah pas grave, avec ton SP2 tout neuf tu ne veras pas de changement :-D
         ♫ Il suffirait de presque rien...
        0
  3. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    Il est sur mon perso pas sur mon pro :o)
    Je vais attendre qu'ils nous l'impose ici pour le mettre chez moi, entre temps ils devront resoudre pas mal de probleme et je saurais a qui m'adresser pour les miens apres :o)

    .  .  Ce post a été écrit entièrement
    \_/  avec des molécules recyclées
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      Je crois que c'est plus sage en effet :)

      Vivement debut septembre qu'on ai plus de réaction suite à l'installation du SP2, je serais ravi de savoir si ce qui t'es arrivé est assez isolé, ou si ça risque de poser probleme aux trois quarts des utilisateurs.

      J'ai l'impression qu'installer le SP2 sur un machine juste pour la mettre a jour n'est pas immaginable pour le moment, visiblement, il faut mieux installer le SP2 sur un systeme fraichement installé... :-/
       ♫ Il suffirait de presque rien...
      0
    2. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
       
      D'autant que au niveau securite je suis tranquille, rien ne peux arriver sur ce PC, tout est redirige sur ma slack sur mon serveur :o) Et en plus j'yi un routeur/fw donc...C'etait plus pour le fun et pour l'USB2 (que j'arrive pas a faire reconnaitre depuis des plombes)

      Je pense que tu as raison pour l'install aussi...Je te raconte pas pour ceux qui vont l'avoir directement par le update...
      Autre chose amusante, il "bouffe" tous les patch XP dans le panneau de desinstallation ...


      .  .  Ce post a été écrit entièrement
      \_/  avec des molécules recyclées
      0
    3. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Ben, oui, logiquement tout ces patch sont dans le SP2 maintenant,
      C'est pas plus mal dans un sens, la derniere fois que j'y ai jeter un oeil, je n'avais plus qu'une longue liste de patch dedans ;)
      Par contre, hote moi d'un doute... quand tu désinstalles le SP2, tu as besoin de tout repacher ?

       ♫ Il suffirait de presque rien...
      0
    4. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797 > teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Pas eu le temps de verifier, ca me ferait chier quand meme :o(
      Enfin comme je le disais je suis bien protege par ailleurs donc pas dramatique...

      .  .  Ce post a été écrit entièrement
      \_/  avec des molécules recyclées
      0
    5. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Yop, pas dramatique pour toi puisque tu sais ou tu mes les pieds :-)
      Mais si ça désinstalles les patch, et que ça pose tant que ça de probléme, on risque fort d'avoir une seconde fois, la floppé de vers et autres...
      J'espere pas, mais, avoir l'effet totalement inverse que celui attendu par microsoft, ce n'est pas totalement exclus :(

       ♫ Il suffirait de presque rien...
      0
  4. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    Bonche :)

    Je fais que le remonter ;)
     ♫ Il suffirait de presque rien...
    0
    1. Serge Messages postés 24622 Date d'inscription   Statut Modérateur Dernière intervention   211
       
      tiens, un vacancier !

      _______
      Sergio
      0
      1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > Serge Messages postés 24622 Date d'inscription   Statut Modérateur Dernière intervention  
         
        raté... a fini vacances :(
         ♫ Il suffirait de presque rien...
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    je suis le seul que ça énerve ? :(
     ♫ Il suffirait de presque rien...
    0
  7. SirHill Messages postés 4070 Statut Contributeur 543
     
    Salut,

    Non, moi zaussi...

    Je vote POUR ! ;-)
    0
  8. SirHill Messages postés 4070 Statut Contributeur 543
     
    Je n'ai pas constaté les "phénomènes" que tu décris ci-dessus (enfin je n'y ai pas trop fait attention), mais ce qui me gêne (silonpeudir) avait été évoqué ici :
    http://www.commentcamarche.net/forum/affich-575028

    Exemple :
    En voulant mettre un texte en gras et en italique, j'obtiens ceci :

    <gras>texte</gras><ital></ital>
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      arf , oui ça c'est encore autre chose!

      Dans le poste du dessus, c'était même quand tu fesais la premiere insertion (<gras>)
      faire en sorte que ça reste selectionner, ça peut etre pas mal, mais ça dépend de la façon dont tu rédiges tes messages, si tu ecrit tout et qu'ensuite tu mets en forme, c'est valable, si tu met en forme au fur et a mesure, ça ne l'est plus...

      C'est justement ce que je sous entendais ici:
        // repositionnement cuseur aprés la balise fermante
        // peut être grandemant amélioré ;-)
        txtObj.selectionStart = pos; 
        txtObj.selectionEnd = pos;


      Le probleme du scroll, c'est uniquement pour mozilla, sous IE, ça se passe sans soucis, c'est peut-etre pour ça que tu ne le vois pas :)
       ♫ Il suffirait de presque rien...
      0
    2. SirHill Messages postés 4070 Statut Contributeur 543
       
      En effet...

      Le "problème" que je mentionne ci-dessus ne survient qu'avec IE, car le texte reste selectionné après l'ajout des balises.

      Enfin c'est pas hyper grave :-)

      J'allais voter pour l'augmentation de la surface d'écriture, mais je viens de m'apercevoir qu'elle a eu lieu ;-)

      Merci Jeff :-)
      0
    3. SirHill Messages postés 4070 Statut Contributeur 543
       
      Ben tiens, pour corriger ce problème, le code ci-dessous :
      ...
      if (ie==1) 
      	{
      		if (txtObj.createTextRange && txtObj.caretPos) 
      			{
      				var caretPos = txtObj.caretPos;
      			
      				if ( txtObj.caretPos.text == '') 
      					{
      						caretPos.text = ( ( enclose ) ? Tag + closeTag : Tag );
      						//caretPos.text.charat(caretPos.text.length - 1)  = ' ' ? Tag + closeTag +  ' ' : Tag + closeTag;
      		 		}
      
      	 			else 
      					{
      						caretPos.text = ( ( enclose ) ? Tag + caretPos.text + closeTag : Tag + caretPos.text );
       	 	 		}	
      
      				markSelection ( caretPos );
      
      		}
      
         		else if (txtObj.getSelection && txtObj.caretPos) 
      			{
      
      				txtObj.focus();
        	 			var caretPos = txtObj.caretPos;
      	 			caretPos.text = caretPos.text.charat(caretPos.text.length - 1)  = ' ' ? Tag + closeTag +  ' ' : Tag + closeTag;
      
      				markSelection ( caretPos );
      
      
      		}
      
      
         		else 
      			{
         				txtObj.value += Tag + closeTag;
      
      		}
      
      }
      ...
      pourrait être remplacé par celui-ci :
      ...
      if (ie==1) 
      	{
        		var str = document.selection.createRange().text;
        		txtObj.focus();
      		var sel = document.selection.createRange();
        		sel.text = Tag + str + closeTag;
        		return;
      }
      ...

      Et le code suivant pourrait être supprimé :
      onkeyup=markSelection(this); onclick=markSelection(this); onselect=markSelection(this); 
      (balise TEXTAREA)
      function markSelection ( txtObj ) {
      
      	if ( txtObj.createTextRange ) 
      		{
      			txtObj.caretPos = document.selection.createRange().duplicate();
      			//isSelected = true;
      	}
      
      	else if (txtObj.getSelection)
      		{
      			txtObj.caretPos = document.getSelection();
      	}
      
      	else return; 
      }
      :-)
      0
  9. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Moi je vote POUR aussi !

                                       
    Jeff  \--Webmaster@CCM--/ 
    0
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      Merci M'sieur! :)

      A puis y'a même plus de place!!! cool, Merci :)
       ♫ Il suffirait de presque rien...
      0
      1. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
         
        Non c'est moi !

        Merci M'sieur asevere, grâce à vous, comme dirait l'autre :
        CCM is fully Mozilla-compliant ! :-)

                                           
        Jeff  \--Webmaster@CCM--/ 
        0
  10. Eaulive Messages postés 27403 Date d'inscription   Statut Modérateur Dernière intervention   294
     
    voyons voir test yes!

    Ça va être dur de s'habituer à ne plus écrire les balises à la main. :-D

    Eaulive...
    Vaut mieux un p'tit piment qu'un avion en plastique
    0
  11. Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention   678
     
    Salut à tous !

    C'est cool ça :-)
    Merci !
      ___________________
      |__ .: Thom@s :. ___|
    0
    1. Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention   678
       
      Re,

      Ce serait cool si on pouvait avoir la même chose dans la FAQ, non ? :-)

      Merci Jeff :)
        ___________________
        |__ .: Thom@s :. ___|
      0
    2. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention  
       
      Trés jsute, j'ai remarqué ça hier, mais j'ai oublié d'en reparler :)
       ♫ Il suffirait de presque rien...
      0
    3. SirHill Messages postés 4070 Statut Contributeur 543 > Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention  
       
      Toutafé ;)

      Et une petite augmentation de la surface d'écriture ne serait pas de refus :)
      0
    4. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308 > Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention  
       
      Tout ceci est fait, merci à tous et en particulier à asevere pour les améliorations de code ! :-)

                                         
      Jeff  \--Webmaster@CCM--/ 
      0
    5. Thom@s Messages postés 2647 Date d'inscription   Statut Membre Dernière intervention   678 > Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention  
       
      et merci à toi :-)
        ___________________
        |__ .: Thom@s :. ___|
      0