[JS/XML] location.replace() bug?

Pagina: 1
Acties:

  • apa
  • Registratie: April 2001
  • Laatst online: 04-10-2025

apa

Run Forest, ruuuuuuuuuunnnnn!!

Topicstarter
Voor de navigatie van een web-applicatie heb ik soms behoefte aan het "vervangen" van een pagina (de huidige pagina wordt op die manier uit de history gehaald en vervangen door een nieuwe URL). Dit kan in IE met de "location.replace()" methode.

De web-applicatie waarover ik het heb werkt volledig XML / XSL based en de transformatie naar HTML gebeurt volledig client-side (XML wordt gestuurd naar client die dan de XSL ophaalt, de transformatie uitvoert en de resulterende HTML afbeeldt)

Als ik nu de "location.replace()" methode gebruik en verwijs naar een XML document, dan blijkt er na het renderen van de nieuwe pagina geen replace te hebben plaatsgevonden en staat de vorige pagina nog steeds in de history.

Concreet moet dus het volgende gebeuren:
  1. User start applicatie op door naar index.html te surfen.
  2. User klikt op link naar "test1.xml"
  3. IE laadt test1.xml + test1.xsl op en rendert de pagina naar HTML
  4. User klikt op linkt waardoor "location.replace(test2.xml);" in JavaScript wordt uitgevoerd
  5. IE laadt test2.xml + test2.xsl op en rendert de pagina naar HTML
  6. User klikt op "BACK" knop
  7. IE laadt terug index.html op
Nu gebeurt het volgende:
  1. User start applicatie op door naar index.html te surfen.
  2. User klikt op link naar "test1.xml"
  3. IE laadt test1.xml + test1.xsl op en rendert de pagina naar HTML
  4. User klikt op linkt waardoor "location.replace(test2.xml);" in JavaScript wordt uitgevoerd
  5. IE laadt test2.xml + test2.xsl op en rendert de pagina naar HTML
  6. User klikt op "BACK" knop
  7. IE laadt terug test1.xml + test1.xsl op en rendert de pagina naar HTML
Ik hoop dat dit voldoende duidelijk is... Iemand enig idee hoe dat komt? Heb het forum hier al goed doorzocht en heb er nog niets op gevonden.

PC: R5-2600X | X370-Pro | 2x8GB | 960Pro 512GB | WD 4TB | GTX 660 | Eizo CX240 | Steinberg UR22MkII | JBL LSR305


  • apa
  • Registratie: April 2001
  • Laatst online: 04-10-2025

apa

Run Forest, ruuuuuuuuuunnnnn!!

Topicstarter
Echt niemand?

Ik heb dit geverifieerd met IE 5.5 op een NT4 machine en IE 6 op een XP machine...

PC: R5-2600X | X370-Pro | 2x8GB | 960Pro 512GB | WD 4TB | GTX 660 | Eizo CX240 | Steinberg UR22MkII | JBL LSR305


  • Juup
  • Registratie: Februari 2000
  • Niet online
De replace functie werkt alleen op strings. Het zal dus nooit je history aanpassen. Wat je eigenlijk doet is dit:
JavaScript:
1
2
3
var string = document.location.href;
string.replace(vanalles);
document.location.href = string;

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

Juup schreef op donderdag 12 mei 2005 @ 14:58:
De replace functie werkt alleen op strings. Het zal dus nooit je history aanpassen. Wat je eigenlijk doet is dit:
JavaScript:
1
2
3
var string = document.location.href;
string.replace(vanalles);
document.location.href = string;
Fout, de replace werkt ook voor de location, daarmee vervang je letterlijk de url in je history zodat je met de back-knop niet terug kunt naar de net gereplacede url :)