11488 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Est-il possible de forcer le rechargement d'un fichier javascript au chargement d'une page par les navigateurs.

Par exemple :
j'ai une première version de page faisant appel à une bibliothèque de fonctions javascript.
Si je rajoute ou modifie une fonction dans cette bibliothèque sans changer le nom du fichier js, au prochain chargement de la page, le fichier js est conservé en cache (ancienne version).
Pour une prise en compte d'une nouvelle version il faut recharger manuellement la page ou vider ses fichiers temporaires.

Si quelqu'un a une solution... je passerai un bon we Smiley cligne

Merci
Bonjour, peut-être ça :



<script type="text/javascript">
<!--
function include (url) {
var s = document.createElement('script');
var h = document.getElementsByTagName('head')[0];
s.setAttribute('type', 'text/javascript');
s.setAttribute('src', url + '?time=' + ((new Date()).getTime()));
h.appendChild(s);
}

include("fichier.js");
// -->
</script>


Le paramètre fictif permet d'avoir à chaque fois un URL différent pour être sûr que le contenu est rechargé...
Hmmm....

Du javascript dynamique sur le même fichier .js ??
Pourrais-tu préciser à quoi cela va t-il servir ?
Parce que si c'est pour un site en local, pas de problème, tu sais ce que tu fais... En revanche, pour un site en ligne, si tu veux modifier dynamiquement ton fichier .js (si j'ai bien compris, ce dont je ne suis pas sûr Smiley cligne ), fais attention : si il y a plusieurs utilisateurs qui modifient différemment le même fichier, tu risques d'avoir des pbms...
Non je ne veux pas modifier en ligne dynamiquement mon fichier js mais lorsque je déploie une nouvelle version de mon site, si entre temps j'ai modifié mon fichier js (correction de bug ou plus simplement ajout de nouvelles fonctions), l'acien fichier est conservé en cache dans le navigateur client et du coup mon site semble bugguer chez ces utilisateurs.

Pour répondre au premier post, je ne veux pas que le script soit rechargé à chaque chargement de page mais uniquement lorsque celui-ci a été modifié.

Il me semble qu'une bonne solution pour recharger systématiquement est de renommer le fichier js en .php et de mettre les bonnes entêtes (header('Content-Type: text/css');) dans le fichier php (Je le fais en tous cas pour charger une css dynamique )
Ok mais les fichiers seront alors chargés à chaque fois => lourd. Dans l'absolu je ne voudrai un rechargement que s'il y a eu une modification.

Cette option est possible sous ie dans les paramètres des fichiers internet temporaires => "Vérifier s'il existe une version plus récente des pages enregistrées..." il faut alors cocher A chaque visite de la page.
Par contre je n'ai pas vu cette option sous firefox, la seule possibilité est de vider le cache manuellement ou de ne pas utiliser de cache.
Dans l'absolu, ça ne change pas grand chose : il faut de toute façon une requête HTTP pour que le navigateur sache si le fichier a été modifié ou non