J'ai une page Web assez complexe qui utilise beaucoup d'Ajax et Javascript. Mon problème est que ce Javascript manipule l'image d'arrière-plan dans un div (en la faisant défiler sur les côtés). Lorsque je frappe F5 (principalement en FF), cela ne provoque qu'un rafraîchissement "à mi-chemin". Le contenu est actualisé, mais l'arrière-plan de la div reste dans la même position. Cela provoque des problèmes car le décalage est mal calculé (le script pense que l'arrière-plan est à la position de départ, mais en fait, il est déplacé).

Existe-t-il un moyen de forcer un rafraîchissement complet pour se débarrasser de ce problème? J'utilise jQuery pour mon Javascript. Une solution de contournement consisterait à vérifier le décalage en charge, mais ce serait pénible à mettre en œuvre à ce stade.

Des idées?

EDIT: l'image à l'origine de ce problème n'est pas chargée à l'aide de javascript ou ajax. C'est du HTML pur et statique.

1
OptimusCrime 24 oct. 2011 à 14:02

5 réponses

Meilleure réponse

Pourquoi ne réinitialisez-vous pas simplement l'état de l'arrière-plan à sa valeur par défaut lorsque la page se charge? Y a-t-il une raison pour laquelle cela ne fonctionnerait pas?

$(document).ready(function(){
  // Set whatever value you're changing to make the background move to it's default
  $('.changing-background').css({
    'left' : ?px,
    'background-position' : ?px ?px
    // Whatever you're using

  })
})
1
daveyfaherty 24 oct. 2011 à 11:07

Ajoutez une chaîne unique à la fin de votre chemin de fichier javascript, par exemple test.js? nocache = 99999999 . Cela fera croire au navigateur qu'il s'agit d'un fichier non mis en cache et téléchargera une nouvelle copie à chaque fois.

Cela signifie plus de transfert de données, mais à moins que vous ne vouliez implémenter un correctif côté client, je ne pense pas qu'il y ait beaucoup de choix ici.

1
Steve 24 oct. 2011 à 10:10

Si vous venez d'appuyer sur F5, il chargera le contenu du cache. Utilisez donc "Ctrl + F5" . Il rafraîchit le cache du navigateur également au moment du rechargement.

0
Rohan Patil 24 oct. 2011 à 10:10

Dans Mozilla Firefox, Ctrl+Shift+P démarre la navigation privée et rien n'est mis en cache. ou vous pouvez définir cache:false à vos demandes ajax comme

$.ajaxSetup({
cache:false
});

Ajouter no-cache

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

De plus amples informations peuvent être trouvées ici

0
Rafay 24 oct. 2011 à 10:38

Essayez d'utiliser "Ctrl + F5", cela forcera votre navigateur à recharger tous les contenus de la page.

2
Marco Pace 24 oct. 2011 à 10:04