選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

226 行
7.0 KiB

  1. /*******************************************************************************
  2. Toutes les fonctions liées à la frappe, erreurs, curseurs…
  3. *******************************************************************************/
  4. la_couleur_du_curseur = "#40e0d0";
  5. //cette fonction compare le texte tapé à « le_texte »
  6. var val=""; //c'est le contenu du champ texte
  7. var val_temp=""; //le texte juste avant pour l'anti-correction
  8. var txt_frap = new Array; // on stock dans ce tableau les différentes lignes de texte que l'on vient de taper
  9. function test(e)
  10. {
  11. // entrer retourne le code 13
  12. var touche = window.event ? e.keyCode : e.which;
  13. //if (touche == 32)
  14. //nb_sp++;
  15. //alert(touche)
  16. if (touche == 16 || touche == 225 || touche == 17 || touche == 18 || touche == 27 || touche == 9 || touche == 20 || touche == 91 || touche == 93) // shift || ctrl || alt || échap || tab || caps-lock || super || menu
  17. return;
  18. if (touche == 8 && anti_correct) // anti correction
  19. {
  20. document.getElementById("txt").value = val_temp;
  21. return;
  22. }
  23. val = document.getElementById("txt").value; //le texte qu'on tape
  24. if (val.substr(val.length-1,1) != le_texte[l-1].substr(val.length-1,1) && val.length-1 != le_texte[l-1].length)
  25. {
  26. document.getElementById("txt").style.backgroundColor = "red";
  27. //var time=document.getElementById("set_time").value;
  28. var time = 150;
  29. setTimeout('document.getElementById("txt").style.backgroundColor = "inherit"',time);
  30. }
  31. if (touche == 13 || val.length >= le_texte[l-1].length+1)
  32. {
  33. //alert(val.length +"-" +val.substr(val.length-1,1) + "-" );
  34. //alert(le_texte[l])
  35. if (val.substr(val.length-1,1) == " ")
  36. val = val.substr(0,val.length-1);
  37. //alert(val.length);
  38. //var reg = new RegExp(" ","g")
  39. //alert(val.replace(reg,"#"));
  40. txt_frap[l-1] = val;
  41. //nb_sp=0;
  42. ligne_suivante();
  43. val_temp="";
  44. return;
  45. }
  46. val_temp=val;
  47. }
  48. function next(e)
  49. {
  50. var touche = window.event ? e.keyCode : e.which;
  51. val = document.getElementById("txt").value; //le texte qu'on tape
  52. if (le_texte[l-1].substr(val.length,1) == " " && touche != 8) // si c'est une espace qui est prévue et si c'est pas un retour un arrière car un cas de retour vu qu'on remet le car si c'est une esapace, ça fait qu'on passe au mot suivant
  53. color_mot("next");
  54. if (le_texte[l-1].substr(val.length-1,1) == " " && touche == 8)
  55. color_mot("prev");
  56. }
  57. // pour passer à la ligne suivante de la leçon
  58. var l = 0;
  59. //var pos_sp=new Array(); // la position de espaces dans la ligne courante pour que le curseur soit au bon endroit
  60. function ligne_suivante()
  61. {
  62. document.getElementById("txt").value = "";
  63. if (l == le_texte.length)
  64. {
  65. l=0;
  66. aff_result();
  67. }
  68. else
  69. {
  70. var col_ligne = new Array("inherit","#bbbbbb","#d4d4d4","#eeeeee");
  71. var mark_ligne = new Array(">> ","   ","   ","   ");
  72. var txt="";
  73. document.getElementById("rd_txt").innerHTML = "";
  74. var ligne_tab = new Array();
  75. for (var i=0 ; i<4 ; i++)
  76. {
  77. if (l+i < le_texte.length)// il faut qu'il reste des lignes
  78. {
  79. if (i==0) // première ligne pour avoir le curseur
  80. {
  81. //on compte le nombre d'espaces dans la ligne pour pouvoir positionner le curseur au bon endroit
  82. //on découpe le tout pour le reconstituer ensuite avec des span identifiant chaque mot (pour le curseur)
  83. var reg = new RegExp(" ","g");
  84. var ligne_tmp = le_texte[l+i].split(reg);
  85. for (var j=0 ; j<ligne_tmp.length ; j++)
  86. {
  87. ligne_tmp[j] = '<span id="mot_'+j+'">'+ligne_tmp[j]+'</span>';
  88. }
  89. txt=ligne_tmp.join(" ");
  90. }
  91. else
  92. txt=le_texte[l+i];
  93. //alert(txt)
  94. ligne_tab[i] = '<span style="color:'+col_ligne[i]+'">'+mark_ligne[i]+txt+'</span><br/>';
  95. }
  96. }
  97. l++;
  98. }
  99. document.getElementById("rd_txt").innerHTML = ligne_tab.join("");
  100. /*for (var i=4 ; i>0 ; i--)
  101. {
  102. document.getElementById("rd_txt").innerHTML += ligne_tab[i-1];
  103. }*/
  104. color_mot("init");
  105. }
  106. function val_curseur(a)
  107. {
  108. if(a)
  109. {
  110. col_cur = la_couleur_du_curseur;
  111. cur_checked = "checked";
  112. }
  113. else
  114. {
  115. col_cur = "inherit";
  116. cur_checked = "";
  117. }
  118. color_mot();
  119. }
  120. var anti_correct = true;
  121. function val_anti_correct(a)
  122. {
  123. anti_correct = false;
  124. if (a == true || a == "init")
  125. anti_correct = true;
  126. if (anti_correct)
  127. document.getElementById("anti_correct").checked = "checked";
  128. else
  129. document.getElementById("anti_correct").checked = "";
  130. }
  131. var colw = 0;
  132. var col_cur = la_couleur_du_curseur; // couleur du curseur
  133. function color_mot(a)
  134. {
  135. /*if (!document.getElementById("val_cur").checked) // pas de curseur
  136. return;*/
  137. if (a == "init")
  138. colw = 0;
  139. else if (a == "next")
  140. {
  141. colw++;
  142. if (document.getElementById("mot_"+(colw-1)))
  143. document.getElementById("mot_"+(colw-1)).style.backgroundColor = "inherit";
  144. }
  145. else if (a == "prev")
  146. {
  147. colw--;
  148. if (document.getElementById("mot_"+(colw+1)))
  149. document.getElementById("mot_"+(colw+1)).style.backgroundColor = "inherit";
  150. }
  151. if (document.getElementById("mot_"+colw))
  152. document.getElementById("mot_"+colw).style.backgroundColor = col_cur;
  153. }
  154. function aff_result() // replacer les undefined par des espaces insécables (pour l'affichage)
  155. {
  156. document.getElementById("rd_txt").innerHTML = "";
  157. var i=0;
  158. var reg = new RegExp(" ","g");
  159. //alert("on est ici . "+txt_frap.length);
  160. while (txt_frap.length > i)
  161. {
  162. if (txt_frap[i] == le_texte[i])
  163. {
  164. document.getElementById("resultats").innerHTML += '<span style="color:green"><strong>—OK— </strong></span>'+txt_frap[i].replace(reg," ")+"<br/><br/>";
  165. }
  166. else
  167. {
  168. var le_texte_tmp = le_texte[i].replace(reg," ");
  169. le_texte_tmp = le_texte_tmp.split("");
  170. var txt_frap_tmp = txt_frap[i].replace(reg," ");
  171. txt_frap_tmp = txt_frap_tmp.split("");
  172. for (var j=0 ; j<le_texte_tmp.length ; j++)
  173. {
  174. if (!txt_frap_tmp[j])
  175. txt_frap_tmp[j] = "_";// pour l'instant c'est la même chose que ce soit souligné parce qu'en suite il devient rouge mais pas d'espace, ils sont pas affichés par le html
  176. if (le_texte_tmp[j] != txt_frap_tmp[j])
  177. txt_frap_tmp[j] = '<span style="text-decoration:underline;color:red"><strong>'+txt_frap_tmp[j]+'</strong></span>';
  178. }
  179. var txt_frap_tmp = txt_frap_tmp.join("");
  180. document.getElementById("resultats").innerHTML += '  >> '+le_texte_tmp.join("")+'<br/><span style="color:red"><strong>-NK- </strong></span>'+txt_frap_tmp+"<br/><br/>";
  181. //document.getElementById("resultats").innerHTML += '  >> '+le_texte[i]+'<br/><span style="color:red"><strong>-NK- </strong></span>'+txt_frap[i]+"<br/><br/>";
  182. }
  183. //alert(i);
  184. i++;
  185. }
  186. txt_frap = new Array(); // ré-init variable
  187. }