Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Javascript loader

Envoyé par : papy

Date : 08/08/2006 11:49

Bonjour,

j'ai besoin de charger dynamiquement des fichiers javascript distants. J'ai commencé par utiliser le composant @mozilla.org/moz/jssubscript-loader;1, cela fonctionnait assez bien même si il est bien spécifié que le fichier doit être locale.

Le seul problème c'est que j'ai effectué des tests sur une machine plus puissante, et la ca ne passe plus, le fichier n'est pas encore chargé au moment ou gecko veut le parser (apparement).

Après quelques recherches je suis tombé sur l'interface nsIScriptLoader, c'est exactement ce qu'il me faut mais elle n'a pas l'air d'être implémentée dans un composant... :(

Ma question est donc la suivante : est-ce que quelqu'un sait si on peut utiliser cette interface d'une manière ou d'une autre, sinon comment est-ce que je pourrais charger ces satanés fichier JS distants (en évitant la solution je le télécharge dans un répertoire temporaire et j'utilise le composant subscript-loader après, enfin si possible...)

# Re: Javascript loader

Envoyé par : laurentj

Date : 14/08/2006 10:17

Ça me parait vraiment bizarre ton problème. Je ne vois pas pourquoi ça marcherait sur certaines machines et pas sur d'autre. Tu es sûr que tu n'a pas un firewall ou un truc comme ça qui bloque ?

C'est quoi l'erreur exactement ?

Sinon il reste une solution : utiliser xmlhttprequest et faire un eval sur la propriété responseText.

# Re: Javascript loader

Envoyé par : papy

Date : 14/08/2006 21:56

En fait le problème vient du fait que le chargement avec @mozilla.org/moz/jssubscript-loader;1 doit être synchrone, ce qui est le cas pour les fichiers en locale mais pas pour les fichiers distants.

Ce qui a du se passer pour que ca marche sur la première machine, c'est que le temps qu'il pédale un peu et commence à parser le fichier, ce dernier était déjà chargé. Avec la machine plus puissante il commence à parser le fichier avant que celui-ci soit complètement chargé d'ou l'erreur. Le problème à ce niveau c'est la récupération asynchrone des fichiers en général.

Ce n'est pas un problème de gecko vu que c'est prévu comme ca, et ils appuient bien sur le 'LOCAL' pour le fichier.

Finalement j'ai utilisé la méthode téléchargement dans un fichier temporaire et inclusion après coup avec le composant @mozilla.org/moz/jssubscript-loader;1. La méthode avec xmlhttprequest est intéressante quand même vue qu'elle permet d'éviter la création du fichier temporaire, je vais sans doute passer par là des que j'ai un peu de temps pour modifier le code existant.

Le seul point qui me chagrine un peu c'est cette interface nsIScriptLoader qui est bien prévu pour faire du chargement asynchrone cette fois-ci, mais dont je ne trouve pas d'implémentation... :( C'est bête c'est vraiment ce qu'il me fallait.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.