jQuery history function bliver overført til næste side?

Tags:    javascript jquery

Hej!

Jeg sidder i den situation at jeg har lavet et plugin i jQUery er det virker super fint, men inde i pluginet bruger jeg "function", så min plugin ser fx således ud: ( Jeg har lavet et test plugin der giver en alert når man scroller )

Fold kodeboks ind/udJScript kode 


Den virker fint, og den function bruger jeg på min forside.

Men jeg bruger jQuery history på min hjemmeside, hvilket gør at når jeg klikker på "Om os" i navigationen er det kun <div id="load"></div> der henter siden uden at opdatere andet. Men hvis jeg nu scroller til bunden igen, så kommer siger den stadig "alert('hej');" som jeg kun har inde på min forside?

Hvorfor overføre den pluginet til alle sider, når jeg kun har sat den inde i index.php og ikke about.php

Håber I forstår, ved ikke lige hvordan jeg kan forklare den anderledes, men spørg så vil jeg gerne forsøge! :-)

Hav en dejlig aften :-)



1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Jeg tror det er netop fordi du bruger jQuery history du har dette problem. I stedet for et frisk pageload som ville rydde dit script så bliver det holdt kørende.

Under almindelige omstændigheder, når du besøger index.php, læser browseren siden, og eksekverer script tags osv., samt viser siden. Den finder dit jQuery script under index.php og eksekverer denne så scroll script kører.

Når du så klikker på linket til about.php rydder browseren alt, indlæser about.php, ligesom den gjorde index.php, og viser siden. Men under læsningen af about.php finder den selvfølgelig ikke dit jquery plugin.

Hvorfor går det så galt med jQuery history? Fordi du besøger index.php og alt sker som før, intet uventet. Når du så klikker på linket til about.php går jQuery history ind og stopper standardopførsel; den annullerer hvad browseren normalt ville gøre, så browseren bliver på index.php. Så henter den asynkront via Ajax about.php. Den fortolker about.php og smider indholdet ind i din div id 'load'. Men bemærk på intet tidspunkt har browseren nulstillet det hele, så den kører stadig dit jQuery plugin.

Hvordan løser du problemet? Uden at vide mere, finder jeg det lidt mærkeligt du vil have to forskellige scroll opførsler. To andre muligheder du kan prøve er:

1. Load dit script via script tag inde fra div 'load'.
2. Læs jQuery history's API igennem for at se hvilke funktioner den tilbyder der kan hjælpe dig med at afgøre om du er i index.php eller about.php. Typisk har sådanne biblioteker en event man kan lytte på som bliver kaldt ved "falsk" pageload. Denne løsning vil dog gøre at dig plugin kun virker på din side.



t