Le javascript du forum ne fonctionne pas bien avec konqueror...

Le javascript du forum ne fonctionne pas bien avec konqueror... - HTML/CSS - Programmation

Marsh Posté le 06-11-2003 à 19:38:58    

Bonjour,
Je viens de m'apercevoir d'un petit bug dans le forum. Je m'explique. Lorsque qu'on compose un message on a des petits boutons pour mettre en gras, en italique, pour souligner, etc. Sur les navigateurs, quand on effectue une sélection sur une partie du texte qu'on a tapé dans la textarea, et qu'on clique sur le bouton gras, des balises gras apparaissent autour du texte séléctionné.

blabla bla bla [g]texte séléctionné[/g] blabla bla bla


Seulement sous konqueror, ces balises apparaissent au bout de toute la zone de texte :

blabla bla bla texte séléctionné blabla bla bla[g][/g]


 
Quelqu'un aurais une idée du bug dans le javascript ?

Reply

Marsh Posté le 06-11-2003 à 19:38:58   

Reply

Marsh Posté le 06-11-2003 à 20:27:10    

Le javascript fautif c'est celui là

Code :
  1. function countInstances(open,closed)
  2.   {
  3.      var opening = document.hop.contenu.value.split(open);
  4.      var closing = document.hop.contenu.value.split(closed);
  5.      return opening.length + closing.length - 2;
  6.   }
  7.   function TAinsert(text1,text2)
  8.   {
  9.      var ta = document.getElementById('contenu');
  10.      
  11.      if (document.selection) {
  12.         var str = document.selection.createRange().text;
  13.         ta.focus();
  14.         var sel = document.selection.createRange();
  15.         if (text2!="" )
  16.         {
  17.            if (str=="" )
  18.            {
  19.               var instances = countInstances(text1,text2);
  20.               if (instances%2 != 0){ sel.text = sel.text + text2;}
  21.               else{ sel.text = sel.text + text1;}
  22.            }
  23.            else
  24.            {
  25.               sel.text = text1 + sel.text + text2;
  26.            }
  27.         }
  28.         else
  29.         {
  30.            sel.text = sel.text + text1;
  31.         }
  32.        
  33.      }
  34.      else if (ta.selectionStart | ta.selectionStart == 0)
  35.      {
  36.         if (ta.selectionEnd > ta.value.length) { ta.selectionEnd = ta.value.length; }
  37.      
  38.         var firstPos = ta.selectionStart;
  39.         var secondPos = ta.selectionEnd+text1.length;
  40.      
  41.         ta.value=ta.value.slice(0,firstPos)+text1+ta.value.slice(firstPos);
  42.         ta.value=ta.value.slice(0,secondPos)+text2+ta.value.slice(secondPos);
  43.        
  44.         ta.selectionStart = firstPos+text1.length;
  45.         ta.selectionEnd = secondPos;
  46.         ta.focus();
  47.      }
  48.      else
  49.      { // Opera  
  50.         var sel = document.hop.contenu;
  51.      
  52.         var instances = countInstances(text1,text2);
  53.         if (instances%2 != 0 && text2 != "" ){ sel.value = sel.value + text2; }
  54.         else{ sel.value = sel.value + text1; }
  55.      } 
  56.   }

Personne vois ?

Reply

Marsh Posté le 07-11-2003 à 13:17:05    

up pitit up :)

Reply

Marsh Posté le 07-11-2003 à 13:32:56    

Si tu trouves comment le corriger, tu peux envoyer la modif à Joce :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-11-2003 à 14:12:36    

Lol ben je connais même pas son contact. Tu l'aurais toi ? Je lui en toucherais bien 2 mots. J'ai fait le tour des forums et l'erreur est la même partout, sur phpbb, invisionboard...

Reply

Marsh Posté le 07-11-2003 à 14:17:35    

http://forum.hardware.fr/message.p [...] &dest=joce
 
Dans phpbb ça ne marche pas dans Mozilla, alors qu'ici ça marche bien :)
 
Le code utilisé ici ne vient pas de Joce en fait, il a juste repris le code que Freekill lui a donné :
http://forum.presence-pc.com/forum [...] ge=1#t3803


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-11-2003 à 14:34:26    

Ah merci impécable :) j'envoie un message privé à freekill :)

Reply

Marsh Posté le 07-11-2003 à 18:27:45    

kaiska a écrit :

Personne vois ?


Parce qu'en matière de manipulation de texte dans les textarea, chaque navigateur fait selon se sauce. Donc libre à toi de proposer le code qui va bien pour Konqueror :)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 07-11-2003 à 22:54:50    

gm_superstar a écrit :


Parce qu'en matière de manipulation de texte dans les textarea, chaque navigateur fait selon se sauce. Donc libre à toi de proposer le code qui va bien pour Konqueror :)


malheureusement mes compétences en javascript son proche du alert("Hello Hfr" ); mais j'imagine qu'il y a un bien une norme pour le javascript.

Reply

Marsh Posté le 08-11-2003 à 12:40:50    

Ce n'est pas ici un problème de JavaScript, mais de DOM.
 
Il y a bien ça en DOM qui correspond à ce que tu cherches :
 
http://www.w3.org/TR/2000/REC-DOM- [...] anges.html
 
Mais son application au Textarea est sujette à débat. Donc pour l'instant il y a ceux qui s'y conforment (IE, une fois n'est pas coutume, avec createRange()) et ceux qui estiment que le textarea est un cas à part (Moz, Opera, peut être konqui)
 
Donc le plus simple est de regarder dans l'implémentation DOM de KHTML (le moteur de Konqueror) pour voir ce qu'il est possible de faire.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-11-2003 à 12:40:50   

Reply

Marsh Posté le 13-11-2003 à 00:36:44    

Quand on utilise konqueror on tape ses balises à la main, parce qu'on est un vrai rebelz? [:ddr555]


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 13-11-2003 à 00:59:21    

Cela dit, le moteur de Konqueror est utilisé dans Safari, le navigateur par défaut d'OS X... Et les macqueux, c'est pas tellement des rebelz ;)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 13-11-2003 à 01:22:00    

Peut-être, mais ce moteur ne dispose pas d'équivalent à getSelection() ou selection.createRange(), donc pas moyen de savoir quel est le texte sélectionné? :/  
 
Le mieux que l'on puisse faire c'est de taper les balises à la fin du texte? [:spamafote]  
 


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed