[Javascript]Location.replace

Pagina: 1
Acties:

  • dafz0r
  • Registratie: April 2003
  • Laatst online: 12-02 12:50
ik heb dus plusminus de volgende functie:

code:
1
2
3
4
5
6
7
8
9
function basefunc()
{
  replace(path, lang);
}

function replace(path, lang)
{
  location.replace(path + "\lang\" + filename)
}


dit is de korte samenvatting :) waarbij ik een redirect doe naar een language afhangelijke dir waarin hetzelfde document staat (maar dan geparst etc)

dus c:\html\template.htm is bv het ding vol te parsen data en c:\html\nl\template.htm is de geparste versie waarmee ik aan de slag wil.

Als ik nu in een andere functie iets wil gaan doen (via getelementbyid) met de pagina in de lang dir dan deed die niet mee... als ik dan ga kijken naar de location.href dan staat die nog op de gewone path+filename zonder de langdir ertussen.

Kan iemand me uitleggen hoe in met het lang afhankelijke document aan de slag kan?

Verwijderd

dafz0r schreef op maandag 24 juli 2006 @ 14:53:
ik heb dus plusminus de volgende functie:

code:
1
2
3
4
5
6
7
8
9
function basefunc()
{
  replace(path, lang);
}

function replace(path, lang)
{
  location.replace(path + "\lang\" + filename)
}


dit is de korte samenvatting :) waarbij ik een redirect doe naar een language afhangelijke dir waarin hetzelfde document staat (maar dan geparst etc)

dus c:\html\template.htm is bv het ding vol te parsen data en c:\html\nl\template.htm is de geparste versie waarmee ik aan de slag wil.

Als ik nu in een andere functie iets wil gaan doen (via getelementbyid) met de pagina in de lang dir dan deed die niet mee... als ik dan ga kijken naar de location.href dan staat die nog op de gewone path+filename zonder de langdir ertussen.

Kan iemand me uitleggen hoe in met het lang afhankelijke document aan de slag kan?
Location.replace bestaat niet volgens mij. Je kunt toch gewoon doorsturen met een document.location = pad?

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

dafz0r schreef op maandag 24 juli 2006 @ 14:53:

Kan iemand me uitleggen hoe in met het lang afhankelijke document aan de slag kan?
Als het goed is replace je de url, dus zou je in de adresbalk ook de nieuwe url moeten zien? Is dat het geval, want anders gaat dat fout.
Verwijderd schreef op maandag 24 juli 2006 @ 18:12:
[...]
Location.replace bestaat niet volgens mij. Je kunt toch gewoon doorsturen met een document.location = pad?
Die bestaat dus wel ;)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

en location is een property van het window object; location als property van het document object is deprecated en vervangen door de read-only URL property ;)

Intentionally left blank


  • dafz0r
  • Registratie: April 2003
  • Laatst online: 12-02 12:50
ik werk dus niet rechtstreeks in IE maar in een platform dat een activex control van IE gebruikt met daar een hele hoop interne logica rondom.

Bleek gewoon dat er een kleine fout zat in mijn javascript afhandeling rondom het activex control die alles normaal liet verlopen maar die wel het window.location object niet meer update. Mag dus slotje op

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Als je aangeeft welke taal je gebruikt in de code tag (JS in dit geval), dan heb je een syntaxhighlighter, en zie je waar je mogelijk een fout hebt:
JavaScript:
1
2
3
4
function replace(path, lang)
{
  location.replace(path + "\lang\" + filename)
}
Zoals je kunt zien, gaat er in je replace(path, lang) functie iets fout. Waarschijnlijk is je escaping niet goed... ;)
JavaScript:
1
2
3
4
function replace(path, lang, filenaam)
{
  location.replace(path"\" + lang + "\" + filenaam);
}
Snap alleen niet, waarom die highlighter niet goed omgaat met escaping, want dit moet, voor zover ik weet, gewoon werken? :?

[ Voor 32% gewijzigd door CH4OS op 25-07-2006 09:14 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

escaping werkt prima in de highlighter:
JavaScript:
1
window.location.replace(path + "\\lang\\" + filenaam);

hoewel je denk ik beter forward slashes kan gebruiken:
JavaScript:
1
window.location.replace(path + "/lang/" + filenaam);

;)

Intentionally left blank


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

crisp schreef op dinsdag 25 juli 2006 @ 09:37:
escaping werkt prima in de highlighter:
JavaScript:
1
window.location.replace(path + "\\lang\\" + filenaam);

hoewel je denk ik beter forward slashes kan gebruiken:
JavaScript:
1
window.location.replace(path + "/lang/" + filenaam);

;)
Maar waarom laat die highlighter de variabele lang dan rood? :? Dan is het toch tekst, of zie ik dat nou verkeerd nu? :?

* CH4OS begint zich af te vragen of de manier waarop hij net escape'te wel goed is :/

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

je bedoelt dit:
JavaScript:
1
path + "\\" + lang + "\\" + filenaam;

?

Intentionally left blank


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

crisp schreef op dinsdag 25 juli 2006 @ 09:46:
je bedoelt dit:
JavaScript:
1
path + "\\" + lang + "\\" + filenaam;

?
Jep :) Maar nu heb je dubbele \\ in je code en als je dan dus gaat redirecten, neemt ie toch die dubbele \ mee en vind je dus je pagina toch niet? :?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

GJ-tje schreef op dinsdag 25 juli 2006 @ 09:53:
[...]
Jep :) Maar nu heb je dubbele \\ in je code en als je dan dus gaat redirecten, neemt ie toch die dubbele \ mee en vind je dus je pagina toch niet? :?
\ is een escape-character in strings, dus als je letterlijk een \ in een string wilt hebben moet je die eerst weer escapen. In je output is het dan uiteindelijk 1 slash:
JavaScript:
1
2
var lang = 'en';
alert("\\" + lang + "\\"); // alerts /en/

maar zoals gezegd: als het om URL's gaat dien je forward-slashes te gebruiken ;)

Intentionally left blank


  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
crisp schreef op dinsdag 25 juli 2006 @ 09:56:
JavaScript:
1
2
var lang = 'en';
alert("\\" + lang + "\\"); // alerts /en/

maar zoals gezegd: als het om URL's gaat dien je forward-slashes te gebruiken ;)
Zo overtuigt van je forward-slashes, dat je meent dat \\ daarwerkelijk een / gaat alert'en?

:Y)

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

funkwurm schreef op dinsdag 25 juli 2006 @ 21:08:
[...]

Zo overtuigt van je forward-slashes, dat je meent dat \\ daarwerkelijk een / gaat alert'en?

:Y)
ej, it's magic! :P

Intentionally left blank


  • DexterDee
  • Registratie: November 2004
  • Laatst online: 21:39

DexterDee

I doubt, therefore I might be

Voor de mensen die niet goed het verschil weten tussen location= en location.replace

De eerste werkt als een link op een pagina, de gebruiker wordt doorgestuurd naar de desbetreffende URL.
location='nieuw.html'; werkt net als klikken op <a href="nieuw.html">link</a>

De tweede werkt soortgelijk, maar zorgt ervoor dat je huidige pagina in de history overschreven wordt.
location.replace('nieuw.html'); opent ook nieuw.html, maar stel dat de huidige pagina huidig.html was, dan kun je daar niet meer naar terugkeren via de back knop van de browser of via het javascript commando history.go(-1);

Dit kan handig zijn als je als programmeur niet wilt dat een gebruiker via de back knop van de browser terug kan gaan naar het vorige scherm.

Klik hier om mij een DM te sturen • 3245 WP op ZW

Pagina: 1