Question

Je travaille sur un google maps chargeur (en utilisant Google Maps API javascript). Je veux ajouter dynamiquement des points à un chemin comme et quand ils viennent disponibles. Modifier . La page Web et javascript sont stockés et chargés localement et non via un serveur web

A cette fin, j'ai créé un fichier javascript externe dans lequel je mets les données que je veux utiliser.

Je charge l'objet java script en utilisant un truc que je trouve nulle part ailleurs sur stackoverflow:

function loadjsfile( filename, callback )
{
    var fileref = document.createElement( 'script' );
    fileref.setAttribute( "type", "text/javascript" );
    fileref.setAttribute( "src", filename );

    var done = false;
    fileref.onload  = fileref.onreadystatechange    = function()
    {
        if( !done && ( !this.readyState 
                                || this.readyState == "loaded" 
                                || this.readyState == "complete") )
        {
                done = true;

                // Continue your code
                callback();

                // Handle memory leak in IE
                fileref.onload = fileref.onreadystatechange = null;
                document.getElementsByTagName( "script" )[0].removeChild( fileref );
        }   
    };
    document.getElementsByTagName( "script" )[0].appendChild( fileref );
}

Cela fonctionne parfaitement comme il attend que le javascript externe a effectivement chargé avant de poursuivre avec le intialisation.

C'est tout ce grand il charge très bien. Je me suis alors fixé un délai d'attente de 5 secondes qui le fichier recharge javascript externe. C'est là que j'ai un problème. Google Chrome est re-charger le fichier javascript externe du cache au lieu d'aller directement sur le disque. Ceci est une énorme douleur car cela signifie que le chemin de ma carte ne met pas à jour comme il va de pair. J'ai vraiment besoin pour.

Quand je rafraîchi la page entière, alors il était très bien, il rechargées le javascript mais le scintillement était très ennuyeux (et il a forcé le dos de la carte à l'état « initial »). Cette nouvelle méthode serait parfaitement à condition que je pouvais forcer travailler à nouveau charger le fichier javascript à chaque fois.

Quelqu'un peut-il me aider?

Je suis très nouveau Javascript (je suis principalement un C ++ codeur) donc des excuses si je demande quelque chose de stupide: D

Était-ce utile?

La solution

Si personne d'autre a d'autres idées, essayez l'ajout d'un nombre aléatoire comme une chaîne de requête au nom du fichier. Cela indiquera le script le fichier est nouveau et devrait forcer un rechargement.

Fondamentalement générer un nombre aléatoire à chaque fois.

var rnd = Math.floor(Math.random()*80000);

Vous le code ressemblerait à quelque chose comme

function loadjsfile( filename, callback )
{
    var rnd = Math.floor(Math.random()*80000);
    var fileref = document.createElement( 'script' );
    fileref.setAttribute( "type", "text/javascript" );
    fileref.setAttribute( "src", filename + "?r=" + rnd ); // note this line

    // other code...
}

Autres conseils

Vous pouvez (si votre fichier est hébergé sur un serveur web apache) ajouter un fichier .htaccess dans le répertoire contenant votre fichier script avec le contenu:

Header set Cache-Control "no-cache"

Ceci empêchera le fichier de mise en cache.

Il y a aussi d'autres façons d'envoyer ces informations d'en-tête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top