Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1577 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  compatibilité javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

compatibilité javascript

n°2124371
kurtjulien
Posté le 01-02-2012 à 14:42:14  profilanswer
 

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
mood
Publicité
Posté le 01-02-2012 à 14:42:14  profilanswer
 

n°2124388
rufo
Pas me confondre avec Lycos!
Posté le 01-02-2012 à 16:55:47  profilanswer
 

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
n°2124397
kurtjulien
Posté le 01-02-2012 à 17:49:46  profilanswer
 

rufo a écrit :

balise code, svp :o


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

n°2124506
rufo
Pas me confondre avec Lycos!
Posté le 02-02-2012 à 09:58:10  profilanswer
 

[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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  compatibilité javascript

 

Sujets relatifs
[JavaScript] Pb compatibilité avec Chrome (page vierge affichée)Problème de compatibilité javascript/IE
[Javascript] onBlur + compatibilité IE6 ?(in)compatibilité javascript et XHTML 1.0 Transitional
probleme de compatibilité IE/firefox en javascriptCompatibilité du Javascript sous IE6 et Mozilla !
Probleme compatibilité IE/FireFox sur un javascriptcode en javascript et compatibilité
[JAVASCRIPT] problème de compatibilité du code entre IE<--> Mozilla 
Plus de sujets relatifs à : compatibilité javascript


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR