probleme javascript sous DOCTYPE XHTML

probleme javascript sous DOCTYPE XHTML - HTML/CSS - Programmation

Marsh Posté le 10-09-2008 à 13:51:29    

Bonjour à tous,
 
J'ai un petit script javascript qui me permet d'afficher une barre de chargement de mes images. Celle ci fonctionne parfaitement en HTML, mais quand je passe en DOCTYPE XHTML, sous firefox, ca ne fonctionne plus. Ca fonctionne bien sous IE.
Voici le code. Si quelqu'un a une idée de où ca vient ?
 

Code :
  1. <script type="text/javascript">
  2.  
  3. var locationAfterPreload = "#"; // URL
  4. var lengthOfPreloadBar = 90; // Length
  5. var heightOfPreloadBar = 3;  // Height
  6. var yourImages =new Array("image1.jpg","image2.jpg","image3.jpg" );
  7. if (document.images) {
  8. var dots = new Array();
  9. dots[0] = new Image(1,1);
  10. dots[0].src = "noir.gif";
  11. dots[1] = new Image(1,1);
  12. dots[1].src = "jaune.gif";
  13. var preImages = new Array(),coverage = Math.floor(lengthOfPreloadBar/yourImages.length),currCount = 0;
  14. var loaded = new Array(),i,covered,timerID;
  15. var leftOverWidth = lengthOfPreloadBar%coverage +"px";
  16. }
  17. function loadImages() {
  18. for (i = 0; i < yourImages.length; i++) {
  19.  preImages[i] = new Image();
  20.  preImages[i].src = yourImages[i];
  21. }
  22. for (i = 0; i < preImages.length; i++) {
  23.  loaded[i] = false;
  24. }
  25. checkLoad();
  26. }
  27. function checkLoad() {
  28. if (currCount == preImages.length) {
  29.  location.replace(locationAfterPreload)
  30.  eval("charge" ).style.visibility = 'hidden';
  31.  return;
  32. }
  33. for (i = 0; i <= preImages.length; i++) {
  34.  if (loaded[i] == false && preImages[i].complete) {
  35.   loaded[i] = true;
  36.   eval("document.img" + currCount + ".src=dots[1].src" )
  37.   currCount++;
  38.  }
  39. }
  40. timerID = setTimeout("checkLoad()",1) ;
  41. }
  42. </script>
  43. <br /><br /><br /><br /><br /><br /><br /><br />
  44. <table cellspacing="2" cellpadding="2" style="text-align : center;">
  45. <tr>
  46.     <td id="text">Chargement...</td>
  47. </tr>
  48. <tr>
  49.     <td> <script type="text/javascript">
  50. if (document.images) {
  51. var preloadBar = '';
  52. for (i = 0; i < yourImages.length-1; i++) {
  53.  preloadBar += '<img src="' + dots[0].src + '" width="' + coverage + '" height="' + heightOfPreloadBar + '" name="img' + i + '" align="absmiddle">';
  54. }
  55. preloadBar += '<img src="' + dots[0].src + '" width="' + (leftOverWidth+coverage) + '" height="' + heightOfPreloadBar + '" name="img' + (yourImages.length-1) + '" align="absmiddle">';
  56. document.write(preloadBar);
  57. loadImages();
  58. }
  59. </script></td>
  60. </tr>
  61. </table>

Reply

Marsh Posté le 10-09-2008 à 13:51:29   

Reply

Marsh Posté le 11-09-2008 à 08:56:15    

personne pour m'aider ?

Reply

Marsh Posté le 11-09-2008 à 09:53:23    

C'est quoi les eval bizarre ? [:pingouino]  
 
Et il ne faut plus du tout utiliser document.write qui date de 1949, mais soit les méthodes DOM, soit passer par la propriété innerHTML

Reply

Marsh Posté le 16-09-2008 à 11:12:06    

Une piste peut être :
http://www.w3.org/TR/xhtml1/#h-4.8
 
Il faut encapsuler ton code javascript dans des CDATA

Code :
  1. <script type="text/javascript">
  2. <![CDATA[
  3. ... unescaped script content ...
  4. ]]>
  5. </script>

Reply

Sujets relatifs:

Leave a Replay

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