Oprettet tor. d. 06. september 2012 kl. 14:10:36

angelenglen
angelenglen (7.967 point. Point ude: 260)

Fang tryk på tilbage-knappen

Jeg har en side med rigtigt meget dynamisk indhold.
Faktisk indlæses alt dynamisk via Ajax og Javascript.

Derfor er det uheldigt hvis folk trykker på "tilbage" da de så forlader min side og ender hvor de var før de klikkede sig ind på min side.

Så det jeg godt kunne tænke mig, var at kunne opdage at folk trykker på tilbage, og gør noget andet i stedet for.
- fx at jeg kalder en javascript, fx ved navn "tilbage();"

På den måde kan jeg sende brugeren til det indhold de tidligere så, frem for at de forsvinder væk fra siden helt.


...men hvordan - og kan det overhovedet lade sig gøre?

Skrevet tor. d. 06. september 2012 kl. 14:13:59| #1

mireigi
mireigi (20.147 point)
Der findes et hav af løsning her:
https://www.google.dk/ (...)

Skrevet tor. d. 06. september 2012 kl. 14:22:44| #2

angelenglen
angelenglen (7.967 point)
jo jo, de fanger tryk på "backspace" knappen.

Men hvad med browserens tilbage-knap?
eller tilbage-knappen på musen.

Skrevet tor. d. 06. september 2012 kl. 14:29:19| #3

olebole
olebole (216.753 point)
<ole>

Det er der ikke nogen standardiseret metode til. Der har gennem tiden eksisteret forskellige dårlige hacks, men der er ikke noget, som fungerer ordentligt - og hvad ville du have ud af det? Når først brugeren har trykket på knappen, kan du ikke cancel'e handlingen. Back knappen er en del af browserens navigationsværktøjer, som naturligvis ikke må kunne disables.

Men det er der jo ikke noget nyt i. Sådan har vi siden begyndelsen af 90'erne levet med, at en browser virker ... og det er jo gået meget godt  =)

/mvh
</bole>

Skrevet tor. d. 06. september 2012 kl. 14:34:36| #4

softspot
softspot (106.504 point)
blog.softspot.dk
Her er nogle forskellige bud (godt nok lidt gamle og sikkert ikke optimale som Ole påpeger):

http://www.aspsnippets.com/ (...)
http://www.hunlock.com/ (...)
http://forums.asp.net/ (...)

Jeg synes dog jeg har læst, et eller andet sted, at man i nyere browsere kan styre back-knappen mere end det hidtil har været muligt. Dette er jeg dog slet ikke sikker på, så betragt det som en teaser til at du selv undersøger det lidt nærmere. Det kan være andre her på eksperten kan be- eller afkræfte dette (men det har Ole jo nok allerede gjort i sit indlæg)...

Skrevet tor. d. 06. september 2012 kl. 14:47:55| #5

olebole
olebole (216.753 point)
- men hvordan skal jeg så bære mig ad med at vende tilbage til siden før - hvis det er det, jeg som bruger ønsker?

Er fejlen ikke, at man (formodentlig fejlagtigt) forestiller sig, at ens egen side er så blændende fantastisk, at ingen nogensinde vil ønske at forlade den - og derfor kan tillade sig at disable brugerens navigationsmuligheder? Der er jo ingen, der siger, at brugeren ikke ønsker at navigere væk fra siden  *o)

Skrevet tor. d. 06. september 2012 kl. 15:00:15| #6

softspot
softspot (106.504 point)
blog.softspot.dk
Jamen, du har naturligvis ret, Ole...

Men spørgeren har jo fundet den ultimative hjemmeside, så du behøver ikke springe tilbage og hvis du ønsker at springe tilbage, så er det naturligvis for at se de genialiteter sitet havde at byde på, på det forrige skærmbillede... og ikke det inferiøre site man kom fra.

Anyway! Er der så en konstruktiv forslag til en måde, hvorpå man kan registrere navigation fremad, således ens history kommer til at indeholde de handlinger man har foretaget sig på den side der er komplet styret af AJAX-opdateringer. Kunne det evt. være noget med navigere til en hashed url (á la #updateX, hvor X er et fortløbende nummer), således der opbygges en history uden at siden faktisk skifter...?

Skrevet tor. d. 06. september 2012 kl. 15:01:54| #7

softspot
softspot (106.504 point)
blog.softspot.dk
"en konstruktiv forslag" er så den jyske måde at sige "et konstruktivt forslag"... :-)

Skrevet tor. d. 06. september 2012 kl. 15:21:47| #8

softspot
softspot (106.504 point)
blog.softspot.dk
Bruger du i øvrigt et JS MVC framework (f.eks. AngularJS)?

Nogle af disse giver mulighed for at "route" indhold, som det kendes fra f.eks. .NET Routing, som bla. MVC gør brug af, men altså uden at siden skifter som sådan. Såvidt jeg husker gør AngularJS det vist via hash-værdier i url'en (in-page-links?)... mon ikke det er metoden du søger. Jeg tror i øvrigt AngularJS kunne være rigtig interessant for dig at kigge på, hvis du altså ikke allerede benytter dig af et JS MVC framework...

Skrevet tor. d. 06. september 2012 kl. 15:25:33| #9

olebole
olebole (216.753 point)
At sætte location.hash er en udbredt fremgangsmåde. Det kan gøres noget i stil med:

<a href="doc.php?page=foobar" onclick="ajaxLoad(this.href);location.hash='foobar';return false">Load side foobar</a>

Skrevet tor. d. 06. september 2012 kl. 15:29:51| #10

olebole
olebole (216.753 point)
- og det kræver så, at man detekterer location.hash, når siden loades - og loader de tilhørende data. Ellers er det jo heller ikke muligt at sende et link til en specifik sidetilstand til en ven

Skrevet tor. d. 06. september 2012 kl. 15:51:26| #11

angelenglen
angelenglen (7.967 point)
For det første tak for forslagene :-)

Og selvfølgelig er min side så blændende fantastisk, at ingen nogensinde vil ønske at forlade den ;-)

Nej ok, i har ret i at jeg ikke lige havde tænkt på at jeg faktisk ville fange brugeren på siden ved den fremgangsmåde, og det er jo egentligt ikke meningen.
Jeg er bare træt af at det ind imellem sker ved et uheld.

Men kan godt se der nok ikke er en foolproof måde at gøre det på, og så er det måske i virkeligheden bedre at lade helt være - i stedet for at gøre det halvt så det virker for nogen men ikke andre, og kun i få situationer :-(

Skrevet tor. d. 06. september 2012 kl. 16:10:17| #12

olebole
olebole (216.753 point)
Problemet er netop, at man kan 'spærre' en bruger inde på sitet - bevidst eller ubevidst. Derfor har browserleverandører altid forsøgt at gøre den slags vanskeligt/umuligt i takt med teknologiens og opfindsomhedens udvikling  =)

Du skal i øvrigt tænke på, at søgemaskiner ikke læser JavaScript og derfor heller ikke umiddelbart selv ser dit Ajax-loadede indhold. Du må servere indholdet specielt for søgemaskinerne, enten via et MVC-framework eller noget funktionalitet efter princippet i #9

Skrevet fre. d. 07. september 2012 kl. 09:03:18| #13

angelenglen
angelenglen (7.967 point)
God pointe med søgemaskinerne, heldigvis er det til en backend hvor Google bare skal holde sig væk fra ;-)

Og ved nærmere eftertanke vælger jeg nu at droppe idéen.
Den var vist ikke helt gennemtænkt :-D

I er alle meget velkomne til at lægge svar, da jeres inputs har hjulpet selvom jeg nu vælger ikke at udføre planen.

Skrevet fre. d. 07. september 2012 kl. 10:36:50| #14

softspot
softspot (106.504 point)
blog.softspot.dk
Hvis det er en backendløsning, synes jeg stadig du bør tage nogle timer ud af kalenderen og kigge på AngularJS. Det ser virkelig interessant ud, hvis du tænker i retning af at lave en singlepage-løsning. Det har en masse værktøjer, bla. til at gøre kobling af data mellem UI og JS-objekter let, routing (som skulle håndtere din aktuelle udfordring) og mange andre features.

Det er Google der står bag det, så jeg vil tro det får den fornødne opmærksomhed (i det mindste indtil de skrotter det ;-)).

http://angularjs.org/

Skrevet fre. d. 07. september 2012 kl. 12:44:22| #15

olebole
olebole (216.753 point)
Det er bare ærgeligt, man øjensynligt ikke har sørget for muligheden for at skrive valid HTML og bruge AngularJS samtidigt

Skrevet fre. d. 07. september 2012 kl. 13:06:24| #16

softspot
softspot (106.504 point)
blog.softspot.dk
Jeg ved ikke nok om standarderne til at kunne udfordre dig på den udtalelse, så det skal nok passe. Kan du give nogle eksempler på specifikke features du hæfter dig ved, som ikke overholder standarderne for HTML5?

Hvis man bruger det i et homogent miljø, hvor man har en vis grad af kontrol over, hvilke klienter der skal køre systemet, har man i det mindste mulighed for at teste om det kan køres af dem der måtte have behov for dette...

Skrevet fre. d. 07. september 2012 kl. 13:07:49| #17

softspot
softspot (106.504 point)
blog.softspot.dk
...altså bort set fra at HTML5 ikke er en standard endnu :-)

Skrevet fre. d. 07. september 2012 kl. 13:50:52| #18

olebole
olebole (216.753 point)
@softspot: Jo og nej. HTML5 er ikke en standard efter den gamle definition. Skal man på den anden side holde sig til den definition, når HTML5 først 'Recommendation' status i 2022 - og bliver først dermed endelig standard.

Derfor har man valgt at lade HTML5 adskille sig væsentligt fra tidligere versioner med en inkrementel model. Altså en model, hvor de enkelte features bliver implementeret efterhånden som modulerne når 'Canididate Recommendation' status (eller endda før) - hvilket i skrivende stund er tilfældet med langt de fleste.

Efter at have kikket lidt mere på AngularJS, kan jeg dog se, at det faktisk er muligt at overholde HTML5 - hvis man prefikser alle direktiver/attibutter med 'data-'. En mulighed, man skal grave godt i dokumentationen for at finde  =)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Flere lightbox's fra samme script.

Oprettet den 25. maj 2013 kl. 21.46
RasmusRR giver 60 point for svar | Giv et svar »

Åben link i nyt vindue.

Oprettet den 23. maj 2013 kl. 14.41
phansen79 giver 200 point for svar | Giv et svar »

Current menuitem

Oprettet den 23. maj 2013 kl. 12.23
EXstorm giver 60 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Fem smarte funktioner i din Mac som du sikkert ikke kender

Her har du fem muligheder for at tweake din Mac på en fed måde.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Ny opfindelse: Oplad din mobil på 20 sekunder

Måske er det snart slut med at lade mobilen op hver aften. Med ny opfindelse kan telefonen få fuld energi på sølle 20 sekunder.


Nyheder fra Computerworld

Teaser billede

Galleri: De 10 vildeste datacentre i verden

I en gammel kirke, i et oppusteligt telt, på nedlagte militæranlæg eller midt i ørkenen. Der er ingen grænser for, hvor man kan banke et datacenter op. Her er de 10 sejeste anlæg i verden. I...


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger