2012-06-26 1 views
4

Can I load a web worker script from an absolute URL? - La réponse ici est non.Web Worker chargement de l'URL absolue

Cependant, il est un hack je trouve quand même le faire:

var worker; //= new Worker('http://xyz/FSWorker.js'); 
var xhr = new XMLHttpRequest(); 
xhr.open("GET", 'http://xyz/FSWorker.js'); 
xhr.responseType = 'blob'; 
xhr.onload = function(e) { 
    var blob = this.response; 
    worker = new Worker(window.URL.createObjectURL(blob)); 
    fs_ready(); // do more stuff here 
}; 

xhr.send(null); 

Je n'aime pas cette méthode beaucoup - je dois maintenant commencer à utiliser le travailleur que lorsqu'un XHR est terminé. L'autre option est de travailler avec le travail en ligne, mais c'est encore plus laid parce que je devrais alors mettre tout mon code dans une énorme chaîne.

Y a-t-il une meilleure façon de faire cela?

Répondre

2

Vous avez découvert une fonctionnalité astucieuse de Web Workers - vous pouvez créer le à partir de presque n'importe quel blob de texte arbitraire.

Si vous chargez le script en tant que nœud <script> sur la page en cours, vous pouvez utiliser une technique Blob similaire pour en créer un Web Worker. En ce qui concerne le chargement de scripts distants, votre relying on XHR est aussi élégant que possible pour accéder au contenu textuel d'un script distant.

+1

Merci. Le seul problème est que je pense que c'est plus lent. Le code sera exécuté après RTT supplémentaire pour obtenir le script. Et je ne vais pas profiter de l'optimisation des navigateurs. – whadar