2013-02-19 2 views
1

Je suis un nouveau à HTML5. J'ai récemment passé en revue les bases du HTML5, mais quand je suis passé au niveau intermédiaire avec le HTML5, j'ai inventé une chose appelée "HTML5 Web Workers". J'ai écrit un programme simple en l'utilisant mais ça ne marche pas.Web Worker ne fonctionne pas

Mon HTML5 code:

<html> 
    <head> 
     <title>HTML5 - Web Workers</title> 
    </head> 
    <body> 
     <p>Count : <output id="result"></output></p> 
     <button onclick="startWorker()">Start count</button> 
     <button onclick="endWorker()">End count</button> 

     <script> 
     var w; //the variable of object for web worker 

     function startWorker() { 
      if(typeof(Worker)!="undefined") //checking if browser supports web worker 
      { 
       if(typeof(w)=="undefined") 
       { 
        w = new Worker("counter.js"); 
       } 
       w.onmessage = function(e) 
       { 
        document.getElementById('result').innerHTML = e.data; 
       }; 
      } 
      else 
      { 
       document.getElementById('result').innerHTML = "Your browser doesnot support HTML5 Web Worker! :)"; // or display the message that web worker is not supported! 
      } 
     } 

     function endWorker() { 
      w.terminate(); 
     } 
     </script> 
    </body> 
</html> 

Mon Web Worker Fichier:

var i=0; 

function timedCount() { 
    i=i+1; 
    postMessage(i); 
    setTimeout("timedCount()", 500); 
} 

timedCount(); 

Pouvez-vous me dire pourquoi il ne fonctionne pas?

+2

Où est 'postMessage()'? Qu'est-ce qui ne fonctionne pas et qu'est-ce que vous attendez? Des erreurs dans la console? – JJJ

+2

@Juhana, postMessage() est une fonction prédéfinie! –

+0

Ok. Qu'est-ce qui ne fonctionne pas et qu'est-ce que vous attendez? Des erreurs dans la console? – JJJ

Répondre

8

Votre code fonctionne bien pour moi. Quel navigateur utilisez-vous et quelle erreur obtenez-vous dans la console d'erreur? Si vous utilisez Chrome et que vous testez depuis le système de fichiers local (c'est-à-dire que vous n'avez pas téléchargé vos fichiers sur un serveur Web), vous devez ajouter un indicateur spécial au démarrage du navigateur. Vous devez démarrer Chrome avec chrome --allow-file-access-from-files qui vous permet essentiellement de créer des travailleurs à partir de scripts sur le système de fichiers local. Mais si vous téléchargez vos fichiers sur un serveur Web et testez ces fichiers, vous n'aurez pas besoin de cet indicateur.

+1

oui! merci: D je l'ai commencé avec localhost et ça a bien fonctionné :) –