Levensduur variabele?

Status
Niet open voor verdere reacties.

Robin S

Gebruiker
Lid geworden
4 dec 2008
Berichten
246
Dag allemaal =)

Ik ben sinds kort een beetje bezig met uitvogelen hoe javascript werkt, door middel van vanalles uitproberen in zelfgemaakte userscriptjes voor Greasemonkey ;)

Nu heb ik dit stukje gemaakt..
PHP:
if (location.href.match(/abc[.]domein[.]nl/)){
	var txt = 'A';
	}

if (txt){
	alert(txt);
	}

Met dat stukje in een userscript bezoek ik abc.domein.nl en krijg netjes een alertboxje dat zeg: "A". Vervolgens type ik xyz.domein.nl in m'n adresbalk, maar opnieuw krijg ik het berichtje: "A". Schijnbaar blijft txt hetzelfde zolang ik op hetzelfde domein blijf. Pas wanneer ik Firefox afsluit, opstart en opnieuw naar xyz.domein.nl ga is er geen alertboxje meer.
Klopt dat? En zo ja, kan ik voorkomen dat txt langer bestaat dan dat ik op abc.domein.nl ben?

Alvast bedankt! =)
 
Ben je daadwerkelijk naar xyz.domein.nl toegesurfd of heb je het alleen ingetypt?

Javascript kijkt naar de pagina waar je bent, niet wat er daadwerkelijk in je adresbalk staat.
 
Ja, ik ben er idd naartoe gesurfd. Sorry voor de onduidelijkheid :p
 
Maar de variabele is als het goed is al weg als je een andere pagina laadt (of eigenlijk al als je de huidige pagina unloadt).

Anders weet ik het niet. Aan je regexp zal het niet liggen aangezien je geen alert krijgt als je de browser opnieuw start... Vaag...
 
Hmm je initialiseert txt alleen als de domein overeenkomt. Probeer het eens zo:

PHP:
var txt = false;
if (location.href.match(/abc[.]domein[.]nl/))
{
  txt = 'A';
}

if (txt)
{
  alert(txt);
}

Als het hier aan ligt is dat behoorlijk gevaarlijk met cross-domein scripting. Behalve dan als dit alleen gebeurt wanner het domein hetzelfde blijft (maar het subdomein verandert). Eerlijk gezegd lijkt het me sterk dat variabel blijven bestaan wanneer de locatie verandert. Maarja, alle variabelen zijn sub-variabelen van het window object en dat wordt inderdaad niet vernietigd (anders zou window.history.back() ook niet werken). Probeer het eens en kijken of het nu wel doet wat je verwacht.
 
Dit werkt inderdaad! :)

Vind het zelf idd ook nog steeds vreemd, had ook niet verwacht dat hij txt zou onthouden..

Bedankt voor de reacties! :)
 
En even de variabele txt op false zetten. Zie onderstaande code:
PHP:
. . .
if (txt)
{
  alert(txt);
  txt = false; // Zet hem op false om de 2e keer geen alert te krijgen
}
 
Denk niet dat de TS nu nog op een antwoord zit te wachten, aangezien het probleem al meer dan een jaar geleden opgelost is...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan