Page de rechargement Javascript

Afin de recharger la page sans recharger complètement tout ce que j’utilise:

window.top.location=window.top.location; 

Cependant, cela ne fonctionne pas pour une raison quelconque lorsqu’il existe un texte d’ancrage. Il semble ne rien faire dans ce cas, mais il est plus probable que cela rafraîchit l’ancre.

Tout correctif pour cela qui rechargera la page (comme ci-dessus) sans recharger les images et les scripts mis en cache?

Essayez d’utiliser location.reload(false) .

Comme le dit MDN , le second paramètre est un booléen indiquant s’il faut ou non contourner le cache. false continue à utiliser le cache, comme vous le souhaitiez.

icktoofay explique la solution de contournement, alors je ne fais que répondre à cette question:

Cependant, cela ne fonctionne pas pour une raison quelconque lorsqu’il existe un texte d’ancrage. Il semble ne rien faire dans ce cas, mais il est plus probable que cela rafraîchit l’ancre.

HTML 5 décrit l’ interface de localisation qui couvre l’affectation à document.location .

Lorsque la méthode d’assignation (url) est appelée, l’agent d’utilisateur doit résoudre l’argument relatif à l’URL de base du script d’entrée et, si cela réussit, doit naviguer dans le contexte de navigation vers l’url spécifié.

L’opération de navigation ne voit donc qu’une URL absolue. Il n’y a donc pas de différence dans l’atsortingbution d’un fragment ou l’affectation d’une URL absolue identique à l’URL de la page avec un fragment.

naviguer

8 Identificateurs de fragment: appliquez l’algorithme d’parsing URL à l’URL absolue de la nouvelle ressource et à l’adresse du document actif du contexte de navigation en cours de navigation. Si tous les composants des URL analysées résultantes, en ignorant les composants de fragment, sont identiques et que la nouvelle ressource doit être extraite à l’aide de HTTP GET ou équivalent, et que l’URL analysée de la nouvelle ressource comporte un composant fragment non null (même s’il est vide), naviguez vers cet identifiant de fragment et annulez ces étapes.

Enfin, la navigation vers un identifiant de fragment dit

Lorsque l’agent utilisateur doit faire défiler jusqu’à l’identificateur de fragment, il doit soit changer la position de défilement du document à l’aide de l’algorithme scroll un élément défini dans la spécification CSSOM View, avec l’alignement avec top ou définir d’autres parameters. action, de sorte que la partie indiquée du document soit scope à l’attention de l’utilisateur.

La meilleure façon d’être complètement sûr que la page elle-même est rechargée, mais les autres éléments mis en cache ne sont pas de changer la chaîne de requête location.search avec un paramètre aléatoire.

Par exemple,

 location.search='?'+Math.random(); 

Le cache n’est pas ignoré, donc tous les éléments de la page seront chargés à partir du cache, mais la page principale elle-même est forcée de se recharger car HTTP requirejs une autre demande au serveur pour chaque valeur de chaîne / emplacement.search unique.

Si votre page est elle-même une application qui utilise une chaîne de requête (comme fichier.cgi? Param = xyz & param2 = abc …), vous devrez alors append à la chaîne de requête plutôt que de la remplacer complètement:

 if (location.search.length > 1) location.search+='&'+Math.random(); else location.search='?'+Math.random(); 

J’ai essayé tout cela pour la situation suivante: j’ai une page compliquée avec un minicart où le client peut enregistrer des projets avec des listes de produits. Maintenant, je voulais laisser le client ouvrir une nouvelle page pour télécharger un rapport tout en conservant la page parente avec l’accordéon ouvert, etc.

Après l’ouverture de la fenêtre de rapport, les clients dont IE8 exécute toujours XP verront la page parente tronquée. La programmation était en ASP.NET avec le code VB derrière. Cette solution a fonctionné pour moi.

 Dim proj As Ssortingng = "" Session.Add("AddCart", idx.ToSsortingng("N0")) Response.Write(proj) 

location.assign est utilisé pour actualiser la page parente tandis que window.open ouvrira le rapport dans une nouvelle fenêtre.

Une variable de session est utilisée pour garder une trace de la ligne d’accordéon à ouvrir. Ceci est géré dans Page_Load

  If Not Page.IsPostBack Then LoadProjects() If Session("AddCart") IsNot Nothing Then Dim idx As Integer = Session("AddCart") ProjAccordion.SelectedIndex = idx Session.Remove("AddCart") ElseIf Session("CopyProj") IsNot Nothing Then Dim idx As Integer = Session("CopyProj") ProjAccordion.SelectedIndex = idx Session.Remove("CopyProj") End If End If 

Utiliser location.href fait le tour http://www.w3schools.com/jsref/prop_loc_href.asp