compatibilité javascript

compatibilité javascript - HTML/CSS - Programmation

Marsh Posté le 01-02-2012 à 14:42:14    

Bonjour,  
j'ai un probleme de compatibilité de mon code javascript sur différent navigateur:
- sur IE6.0, les images ne sont meme pas affichées...
- sur google chromo, elles sont affichées, mais on ne peut pas cliquer dessus, rien ne se passe.
 
Pour précision, c'est un jeu de démineur qui fonctionnait très bien sur IE version précédente.
 
voici le code:  
 
qu'est ce qui a changé depuis ?
 
je vous remercie de votre aide.
 

Code :
  1. <script type="text/javascript">
  2. var CASE_EMPTY = 0;   //  
  3. var CASE_FLAG = 1;   //  
  4. var CASE_CLICK = 2;   //  
  5. var TABLE_WIDTH = <?php if (isset($horizontal)) {echo $horizontal;} else {echo '9';}?>;  // Nombre de cases HORIZONTALE
  6. var TABLE_HEIGHT = <?php if (isset($vertical)) {echo $vertical;} else {echo '9';}?>;  // Nombre de cases VERTICALE
  7. var nbMines = <?php if (isset($mines)) {echo $mines;} else {echo '10';}?>;   // Nombre de mine dans le jeu
  8. var nbFlags = 0;   // Nombre de drapeau posé
  9. var nbrMaxClick = TABLE_WIDTH*TABLE_HEIGHT - nbMines;  // nombre de click maximum
  10. var PMS; // Première MilliSeconde
  11. var alreadyClick = false;
  12. var elapsedTime = 0;
  13. var idto;     // nombre ?? temps ??
  14. var tab = new Array();
  15. var tabFlag = new Array();
  16. function initTabs()
  17. {
  18. alreadyClick = false;
  19. elapsedTime = 0;
  20. idto = null;
  21. nbFlags = 0;
  22. for(var i=0; i<TABLE_HEIGHT; i++)  // CREATION DES CASES VERTICALES
  23. {
  24. tab[i] = new Array();
  25. tabFlag[i] = new Array();
  26. for(var j=0; j<TABLE_WIDTH; j++) // CREATION DES CASES HORIZONTALES (pourquoi le mettre dans le premier for? si je le met en dehors, est-ce que ca marche ?)
  27.  {
  28.  tab[i][j] = 0;
  29.  tabFlag[i][j] = CASE_EMPTY;
  30.  }
  31. }
  32. }
  33. function fillTab(NbMines, xPosInit, yPosInit)
  34. {
  35. var iNbMines = NbMines;
  36. var minValue = -2*NbMines;
  37. while(iNbMines > 0)
  38. {
  39. var xPos = Math.floor(Math.random()*TABLE_HEIGHT); // Retourne un nb ENTIER aléatoire entre 0 et TABLE_HEIGHT
  40. var yPos = Math.floor(Math.random()*TABLE_WIDTH); // Retourne un nb ENTIER aléatoire entre 0 et TABLE_WIDTH
  41. if(tab[xPos][yPos] >= 0 && (xPosInit != xPos || yPosInit != yPos))
  42. {
  43. tab[xPos][yPos] = minValue;
  44. if(xPos > 0)
  45. {
  46. tab[xPos-1][yPos] ++;
  47. if(yPos > 0) tab[xPos-1][yPos-1] ++;
  48. if(yPos < TABLE_WIDTH - 1) tab[xPos-1][yPos+1] ++;
  49. }
  50. if(xPos < TABLE_HEIGHT - 1)
  51. {
  52. tab[xPos+1][yPos] ++;
  53. if(yPos > 0) tab[xPos+1][yPos-1] ++;
  54. if(yPos < TABLE_WIDTH - 1) tab[xPos+1][yPos+1] ++;
  55. }
  56. if(yPos > 0) tab[xPos][yPos-1] ++;
  57. if(yPos < TABLE_WIDTH - 1) tab[xPos][yPos+1] ++;
  58. iNbMines --;
  59. }
  60. }
  61. return true;
  62. }
  63. function writeTab(bFlag)
  64. {
  65. for(var xPos=0; xPos<tab.length; xPos++)
  66. for(var yPos=0; yPos<tab[xPos].length; yPos++)
  67. if(!tabFlag[xPos][yPos])
  68. {
  69. if(tab[xPos][yPos] < 0)
  70.  document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = '<img src="img/<?php echo $design; ?>'+(bFlag?'flag':'mine')+'.bmp"/>'
  71. else
  72. document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = '<img src="img/<?php echo $design; ?>'+tab[xPos][yPos]+'.bmp"/>';
  73. }
  74. else
  75. if(tabFlag[xPos][yPos] == CASE_FLAG && tab[xPos][yPos] >= 0)
  76. document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = '<img src="img/<?php echo $design; ?>nomine.bmp"/>'
  77. }
  78. function caseClick(caseId)
  79. {
  80. var xPos = Math.floor(caseId/TABLE_WIDTH);
  81. var yPos = caseId - TABLE_WIDTH * xPos;
  82. if(!alreadyClick)
  83.  {
  84.  fillTab(nbMines, xPos, yPos);
  85.  compteur();
  86.  alreadyClick=true;
  87.  }
  88. if(tabFlag[xPos][yPos]) return;
  89. if(checkEnd()) return;
  90. if(!tabFlag[xPos][yPos])
  91.  {
  92.  if(tab[xPos][yPos] < 0)    /* JEU PERDU */
  93.   {
  94.   window.clearTimeout(idto);  // ARRET DU CHRONO
  95.   idto = null;
  96.   document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = '<img src="img/<?php echo $design; ?>mine.bmp"/>';
  97.   tabFlag[xPos][yPos] = CASE_CLICK;
  98.   writeTab();
  99.   alert("DESOLE, VOUS AVEZ PERDU !" );
  100.   document.chronometre.gagne.value=0;
  101.   window.document.forms['chronometre'].submit();
  102.   return;
  103.   }
  104.  else
  105.   {
  106.   document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = '<img onmouseup="if(event.button == 2) balayage('+(xPos*TABLE_WIDTH+yPos)+');" src="img/<?php echo $design; ?>'+tab[xPos][yPos]+'.bmp"/>';
  107.   nbrMaxClick --;
  108.   checkEnd();
  109.   tabFlag[xPos][yPos] = CASE_CLICK;
  110.   }
  111.  if(tab[xPos][yPos]==0)
  112.   {
  113.   if(xPos > 0)
  114.    {
  115.    caseClick(caseId - TABLE_WIDTH);
  116.    if(yPos > 0) caseClick(caseId - TABLE_WIDTH - 1);
  117.    if(yPos < TABLE_WIDTH - 1) caseClick(caseId - TABLE_WIDTH + 1);
  118.    }
  119.   if(xPos < TABLE_HEIGHT - 1)
  120.    {
  121.    caseClick(caseId + TABLE_WIDTH);
  122.    if(yPos > 0) caseClick(caseId + TABLE_WIDTH - 1);
  123.    if(yPos < TABLE_WIDTH - 1) caseClick(caseId + TABLE_WIDTH + 1);
  124.    }
  125.   if(yPos > 0) caseClick(caseId - 1);
  126.   if(yPos < TABLE_WIDTH - 1) caseClick(caseId + 1);
  127.   }
  128.  }
  129. }
  130. function caseRightClick(caseId)   // CLIQUE DROIT -----------------------
  131. {
  132. if(!idto) return;
  133. if(!alreadyClick) return;
  134. var xPos = Math.floor(caseId/TABLE_WIDTH);
  135. var yPos = caseId - TABLE_WIDTH * xPos;
  136. if(!tabFlag[xPos][yPos] && nbFlags < nbMines)
  137. {
  138. document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = '<img src="img/<?php echo $design; ?>flag.bmp" onmouseup="if(event.button == 2) caseRightClick('+(xPos*TABLE_WIDTH+yPos)+'); else if(event.button == 1) caseClick('+(xPos*TABLE_WIDTH+yPos)+');"/>';
  139. tabFlag[xPos][yPos] = CASE_FLAG;
  140.  nbFlags ++;
  141.  mineCompteur();
  142. }
  143. else if(tabFlag[xPos][yPos] == CASE_FLAG || nbFlags == nbMines)
  144. {
  145.  if(tabFlag[xPos][yPos] == CASE_FLAG)
  146.  {
  147.   nbFlags --;
  148.   mineCompteur();
  149.  }
  150. document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = '<img src="img/<?php echo $design; ?>vide.bmp" onmouseup="if(event.button == 2) caseRightClick('+(xPos*TABLE_WIDTH+yPos)+'); else caseClick('+(xPos*TABLE_WIDTH+yPos)+');">';
  151. tabFlag[xPos][yPos] = CASE_EMPTY;
  152. }
  153. checkEnd();
  154. }
  155. function balayage(caseId)
  156. {
  157. if(!idto) return;
  158. if(!alreadyClick) return;
  159. var xPos = Math.floor(caseId/TABLE_WIDTH);
  160. var yPos = caseId - TABLE_WIDTH * xPos;
  161. document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML = document.getElementById('case'+(xPos*TABLE_WIDTH+yPos)).innerHTML;
  162. var count = tab[xPos][yPos];
  163. if(xPos > 0)
  164. {
  165. if(tabFlag[xPos-1][yPos] == CASE_FLAG) count--;
  166. if(yPos > 0) if(tabFlag[xPos-1][yPos-1] == CASE_FLAG) count--;
  167. if(yPos < TABLE_WIDTH - 1) if(tabFlag[xPos-1][yPos+1] == CASE_FLAG) count--;
  168. }
  169. if(xPos < TABLE_HEIGHT - 1)
  170. {
  171. if(tabFlag[xPos+1][yPos] == CASE_FLAG) count--;
  172. if(yPos > 0) if(tabFlag[xPos+1][yPos-1] == CASE_FLAG) count--;
  173. if(yPos < TABLE_WIDTH - 1) if(tabFlag[xPos+1][yPos+1] == CASE_FLAG) count--;
  174. }
  175. if(yPos > 0) if(tabFlag[xPos][yPos-1] == CASE_FLAG) count--;
  176. if(yPos < TABLE_WIDTH - 1) if(tabFlag[xPos][yPos+1] == CASE_FLAG) count--;
  177. if(count) return;
  178. if(xPos > 0)
  179. {
  180. caseClick(caseId - TABLE_WIDTH);
  181. if(yPos > 0) caseClick(caseId - TABLE_WIDTH - 1);
  182. if(yPos < TABLE_WIDTH - 1) caseClick(caseId - TABLE_WIDTH + 1);
  183. }
  184. if(xPos < TABLE_HEIGHT - 1)
  185. {
  186. caseClick(caseId + TABLE_WIDTH);
  187. if(yPos > 0) caseClick(caseId + TABLE_WIDTH - 1);
  188. if(yPos < TABLE_WIDTH - 1) caseClick(caseId + TABLE_WIDTH + 1);
  189. }
  190. if(yPos > 0) caseClick(caseId - 1);
  191. if(yPos < TABLE_WIDTH - 1) caseClick(caseId + 1);
  192. }
  193. function checkEnd()      // JEU TERMINE -----------------------
  194. {
  195. if(nbrMaxClick) return false;
  196. window.clearTimeout(idto);    // ARRET DU CHRONO
  197. idto = null;
  198. writeTab(true);
  199. alert('BRAVO ! VOUS AVEZ GAGNE');
  200. //window.location="score.php"; // AJOUT JULIEN
  201. document.chronometre.gagne.value=1;
  202. window.document.forms['chronometre'].submit();
  203. return true;
  204. }
  205. PMS = (new Date()).getTime();
  206. function compteur()      // COMPTEUR TEMPS -----------------------
  207. {
  208. var tps, hs, das, s, ds, cs, ms;
  209. tps = (new Date()).getTime() - PMS; // CALCUL DU TEMPS ÉCOULÉ DEPUIS LE DÉBUT DU CHRONOMÈTRE.
  210. hs = Math.floor(tps / 100000);    // HECTOSECONDE
  211. das = Math.floor((tps%100000) / 10000); // DECASECONDE
  212. s = Math.floor((tps%10000) / 1000);  // SECONDE
  213. ds = Math.floor((tps%1000) / 100);   // DECISECONDE
  214. cs = Math.floor((tps%100) / 10);   // CENTISECONDE
  215. ms = Math.floor((tps%10) / 1);    // MILLISECONDE
  216. document.chronometre.ms.value=ms;   // MILLI
  217. document.chronometre.cs.value=cs;   // CENTI
  218. document.chronometre.ds.value=ds;   // DECI
  219. document.chronometre.s.value=s;   // SEC
  220. document.chronometre.das.value=das;   // DIXAINE
  221. document.chronometre.hs.value=hs;   // CENTAINE
  222. // on relance la fonction pour mettre le chronomètre à jour. Sauf si on dépasse 999 secondes.
  223. idto = setTimeout(compteur, 1);
  224. if (hs < 10) {idto}
  225. document.chronometre.haut.value=TABLE_HEIGHT;
  226. document.chronometre.large.value=TABLE_WIDTH;
  227. document.chronometre.mine.value=nbMines;
  228. document.getElementById('digit0').src = 'img/<?php echo $design; ?>digit'+s+'.bmp'; // SECONDE
  229. if(s) return;
  230. document.getElementById('digit1').src = 'img/<?php echo $design; ?>digit'+das+'.bmp'; // DIXAINE DE SECONDE
  231. if(das) return;
  232. document.getElementById('digit2').src = 'img/<?php echo $design; ?>digit'+hs+'.bmp'; // CENTAINE DE SECONDE
  233. }
  234. function newGame()      // 1. NOUVEAU JEU -----------------------
  235. {
  236. nbrMaxClick = TABLE_WIDTH*TABLE_HEIGHT - nbMines;  // NOMBRE MAXIMUM DE CLIC
  237. initTabs();
  238. mineCompteur();
  239. var htmlCode = '';  // CREATION DE LA ZONE DE JEU
  240. htmlCode += '<table class="zonejeu_table" summary="Zone de jeu">';
  241. for(var indexX = 0; indexX<TABLE_HEIGHT; indexX++)
  242. {
  243. htmlCode += '<tr>';
  244. for(var indexY = 0; indexY<TABLE_WIDTH; indexY++)
  245. htmlCode += '<td class="zonejeu_td"><span id="case'+(indexX*TABLE_WIDTH+indexY)+'"><img src=img/<?php echo $design; ?>vide.bmp onmouseup="if(event.button == 2) caseRightClick('+(indexX*TABLE_WIDTH+indexY)+'); else if(event.button == 1) caseClick('+(indexX*TABLE_WIDTH+indexY)+');"></span></td>';
  246. htmlCode += '</tr>';
  247. }
  248. htmlCode += '</table>';
  249. document.getElementById('gamezone').innerHTML = htmlCode;
  250. }
  251. function setWidth(val)     // SELECTION WIDTH -----------------------
  252. {
  253. var tmpWidth = parseInt(val);
  254. if(tmpWidth+'' == 'NaN' || tmpWidth <= 1) {document.getElementById('gameWidth').value = TABLE_WIDTH; return;}
  255. TABLE_WIDTH = tmpWidth;
  256. setMines(document.getElementById('gameMines').value);
  257. }
  258. function setHeight(val)     // SELECTION HEIGHT -----------------------
  259. {
  260. var tmpHeight = parseInt(val);
  261. if(tmpHeight+'' == 'NaN' || tmpHeight <= 1) {document.getElementById('gameHeight').value = TABLE_HEIGHT; return;}
  262. TABLE_HEIGHT = tmpHeight;
  263. setMines(document.getElementById('gameMines').value);
  264. }
  265. function setMines(val)     // SELECTION MINES -----------------------
  266. {
  267. var tmpMines = parseInt(val);
  268. if(tmpMines+'' == 'NaN' || tmpMines < 1 || tmpMines >= TABLE_WIDTH*TABLE_HEIGHT)
  269. {
  270. document.getElementById('gameMines').value = ((TABLE_WIDTH*TABLE_HEIGHT>10)?10:TABLE_WIDTH*TABLE_HEIGHT-1);
  271. //alert('Vous avez choisi le niveau \n\nPersonnalisé');  /* Lors d'une sélection du nombre de mine, mettre comme niveau "personnalisé" */
  272. document.getElementById('niveau').value = "Personnalisé"
  273. return;
  274. }
  275. nbMines = tmpMines;
  276. }
  277. function mineCompteur()     // COMPTEUR MINE -----------------------
  278. {
  279. var val = nbMines - nbFlags; // MINES RESTANTES
  280. var mines_restantes_1 = Math.floor(val/10);
  281. var mines_restantes_0 = val - 10*mines_restantes_1;
  282. document.getElementById('minedigit0').src = 'img/<?php echo $design; ?>digit'+mines_restantes_0+'.bmp';
  283. document.getElementById('minedigit1').src = 'img/<?php echo $design; ?>digit'+mines_restantes_1+'.bmp';
  284. }
  285. </script>


Message édité par kurtjulien le 01-02-2012 à 17:49:04
Reply

Marsh Posté le 01-02-2012 à 14:42:14   

Reply

Marsh Posté le 01-02-2012 à 16:55:47    

balise code, svp :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-02-2012 à 17:49:46    

rufo a écrit :

balise code, svp :o


 
désolé, voila, c'est édité. merci

Reply

Marsh Posté le 02-02-2012 à 09:58:10    

[cite]Pour précision, c'est un jeu de démineur qui fonctionnait très bien sur IE version précédente. [/cite]
Quelle version précédente d'IE? Pas la 5.5 quand même :??:
 
Le pb est que ce code est pas bien codé et difficile à lire :/ En +, y'a même pas l'indentation. Sur FF, installes Firebug et essayes de voir où ça coince...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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