Bug javascript/ie de mise en forme textarea

Fermé
french50 - 31 mai 2003 à 17:13
asevere Messages postés 13095 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 - 1 juin 2003 à 01:06
Voici mon problème :
J'ai une page php avec 10 textarea. Je sais que le problème est connu sur le forum, c'est la classique : "comment mettre en forme du texte en insérant des tags ?". MAIS ne partez pas tout de suite svp. C'est vraiment très important pour moi, c'est dans le cadre de mon projet d'année à l'unif que je dois rendre lundi, et je suis entrain de devenir fou.

Avant toute chose, je précise qu'une solution comme interactivetools ne convient pas , car incompatible netscape.

Le vif du sujet :
j'ai donc ma page avec les 10 textarea, et des boutons de mise en forme. lors de la validation du formulaire, il passe à une page enregistrant les valeur dans des variables de session. Une fois ceci fait, redirection vers une autre page qui enregistre ces valeurs dans une base de données mysql.

////// Première solution testée : utiliser le code source de ce forum

J'ai effectué plusieurs tests différents, mais un seul me parait interressant. Les boutons d'insertions marchaient parfaitement bien, aucun problème de ce coté là. Mais si je rempli les 10 textarea, même sans utiliser les boutons de mise en forme quand je valide le formulaire j'ai un plantage d'internet explorer ( module mshtml.dll, 0xc0000005 ). Et AUCUN sous netscape !

Ce qui est bizarre :
. si je supprime tout le code relatif aux boutons, je n'ai aucun plantage -> il ne s'agit pas d'un dépassement de mémoire
. lorsqu'il se plante, il ne seplante pas de suite : si à l'écran ma page affichée reste celle du formulaire, il enregistre tout de même les valeurs dans la base de données, et ma page a donc bien effectué les deux redirections !
. en ne remplissant pas l'entièreté des cases, mais par exemple 7, aucun plantage ! -> test : j'ai remplacé mon formulaire par deux pages distinctes de 5 textarea chacune, et là rebelotte : si j'en entre 4 ou 5 , plantage !

// Deuxième solution utilisée : idée similaire ( javascript ) mais code différent
J'ai trouvé le code suivant :
1) le script :
<script language="JavaScript" type="text/javascript">
function storeCaret(text)
{ // voided
}

function AddText(startTag,defaultText,endTag,nom_du_textarea)
{
if (nom_du_textarea.createTextRange)
{
var text;
nom_du_textarea.focus(nom_du_textarea.caretPos);
nom_du_textarea.caretPos = document.selection.createRange().duplicate();
if(nom_du_textarea.caretPos.text.length>0)
{
nom_du_textarea.caretPos.text = startTag + nom_du_textarea.caretPos.text + endTag;
}
else
{
nom_du_textarea.caretPos.text = startTag+defaultText+endTag;
}
}
else nom_du_textarea.value += startTag+defaultText+endTag;
}
</script>
2) le code d'une de mes textarea :
<textarea name="V24" wrap=virtual onkeyup="javascript:storeCaret(this);" onclick="javascript:storeCaret(this);" onchange="javascript:storeCaret(this);" cols="60" rows="6"></textarea>
3) le code d'un des bouton associé à cette textarea :
<a href="javascript:AddText('[retrait]','retrait','[/retrait]',document.pre.V24);"><img src="../design/p.gif" width="20" height="19" alt="puce" border="0"></a>

Et là, les plantages sont légèrement différents d'avec le code précédent ( toujours avec internet explorer , ça marche nickel sous netscape ) :
. Si je rempli mes 10 textarea sans utiliser les boutons, aucun plantage
. Si j'utilise les boutons, aucun plantage si je le fais dans 6 de mes textarea, mais plantage au delà !


Je sais que c'est un peu barbare comme message, mais vraiment je vous en serez extrèmement reconnaissant si vous pouviez m'aider ou si vous connaissiez quelque chose de similaire dans l'idée qui fonctionne avec internet explorer ET netscape !

Merci à ceux qui m'ont lu ;-)
A voir également:

2 réponses

Je précise qu'une des pistes qui m'a été donnée est que le code pourrait interférer avec des variables systèmes utilisées par internet explorer ( on m'a parlé de "dom" ou un truc comme ça )
0
asevere Messages postés 13095 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 426
1 juin 2003 à 01:06
Bonsoir French50

J'ai eu le même probleme il n'y a pas si longtemps :)

je ne pense vraiment pas que ca vienne de ton javascript , enfin pour moi avec où sans les résultat étaient identiques...

j'avais donc un formulaire avec un nombre variable de textarea

pour ie5.5:

plus de 5 ou 6 textarea plantage mais la requete etait quand meme executée correctement...

pour ie 6.0:

pas de probleme jusqu'à une douzaine de textarea.

pour ns 7.02:

aucun probleme jusqu'à unea douzaine de textarea.

Essai avec ces différentes versions pour voir.
Je n'ai pas trouvé d'explication à ceci mais je pense que ie 5.5 et <
était limités soit dans la memoire aloué aux scripts (si il y en a une:) ), soit tout simplement à un nombre d'éléments de formulaire.

Si quelqu'un peut apporter de plus amples infos à ce sujet je suis preneur :))

@++


Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
0