Avatar billede wan31 Nybegynder
02. april 2004 - 00:34 Der er 77 kommentarer og
2 løsninger

Onunload, men ikke aligevel

Hey.
Jeg skal have min hjemmeside til at udføre et stykke kode når man trykker på det lille kryds i toppen.
Jeg troede jeg kunne gøre det ved at bruge en onunload i Body, men det lader til at den udføre koden når man også opdatere siden, det er ikke meningen....
Avatar billede thesurfer Nybegynder
02. april 2004 - 00:37 #1
Når siden opdateres, unloades siden og derfer loades nyt indhold.
Avatar billede wan31 Nybegynder
02. april 2004 - 00:39 #2
Klart nok. Men hvordan for jeg den så til KUN at loade min Function, når der enten trykkes på kryds, og hvis de diregere sig væk fra siden, hvis det sidste er muligt. Men ihvertfald hvis de lukker siden..???
Avatar billede thesurfer Nybegynder
02. april 2004 - 00:44 #3
Godt spm :-)

Du kunne jo smide siden i en iframe, og have "luk"-koden i hoved siden..
Avatar billede wan31 Nybegynder
02. april 2004 - 00:44 #4
Siden er opbygget i tre Iframes :-P
Avatar billede thesurfer Nybegynder
02. april 2004 - 00:45 #5
<html>
<head>
</head>
<body onunload="alert('farvel');">
<iframe src="side.htm" width="100%" height="100%" frameborder=0"></iframe>
</body>
</html>
Avatar billede wan31 Nybegynder
02. april 2004 - 00:46 #6
Men det forhindre ikke opdatering 100%, og jeg skal sku være 100% på at den side ikke laver koks i det, da det er en User Online Application jeg skal have den til at lave en - på....
Avatar billede thesurfer Nybegynder
02. april 2004 - 00:46 #7
jamen, så er "side.htm" opbygget af 3 frames, og den loades i iframen :-)
Avatar billede wan31 Nybegynder
02. april 2004 - 00:47 #8
Hmn...Tja en Alert kunne være god, men den skal jo stadig udføre min Function samtidig
Avatar billede wan31 Nybegynder
02. april 2004 - 00:48 #9
Loades i Iframet..??
Avatar billede thesurfer Nybegynder
02. april 2004 - 00:49 #10
ja.. framesettet er jo en htm/html fil.. load den i iframen lige som mit eksempel.

det med alert var bare et eksempel, hvis du ville teste det..
Avatar billede wan31 Nybegynder
02. april 2004 - 00:50 #11
Function Logaf()
Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")-1
Application.UnLock
Function

Kan jeg på en eller anden måde lave den Alert, og så få den til at udføre den Function ved tryk på OK, og bare opdatere siden, eller lave intet ved Annuller.??
Avatar billede wan31 Nybegynder
02. april 2004 - 00:51 #12
For fatter ikke lige hvad du mener med det andet
Avatar billede thesurfer Nybegynder
02. april 2004 - 00:56 #13
ASP koden afvikles på serveren. Dvs, siden skal (re)loades for at du kan udføre asp kode.
Du kan have din asp kode i hovedsiden, og smide data over i iframen, hvis du vil.

Nu ved jeg ikke hvad du har af kode.. det nemmeste ville være, smid du kunne oploade din side.. så kan vi nemmere se hvordan det foregår..
Avatar billede roenving Novice
02. april 2004 - 00:56 #14
Hvad med at bruge sessions ?-)

Det lyder umiddelbart som noget .Net, så Application har sikkert en del med sessions at gøre (jeg aner det ikke !-)

Men hvis du har 3 iframes, kunne du måske have en fjerde skjult iframe, som med korte mellemrum vedligeholdt din session, og hvis den ikke var blevet veligeholdt indenfor f.eks. mellemrummet + 20% så blev den nedlagt ...
Avatar billede wan31 Nybegynder
02. april 2004 - 01:00 #15
Session bliver kun gemt på browseren. Application er på en måde en Session, bortset fra at den gemmes på serveren og er til gængelig for alle, så tror ikke Sessions er det man skal bruge til at holde styr på Online Users
Avatar billede wan31 Nybegynder
02. april 2004 - 01:06 #16
Når, men har fundet en nemmere måde på det lort...

Function Logon()

Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")+1
Application.UnLock

End Function


Function Logoff()

Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")-1
Application.UnLock

End Function

Så ligemeget om du surfer videre, andkommer, opdatere eller hvad fanden du gør, så vil tallet altid passe. Har bare et problem.

Onload og Onunload lader ikke til at virke på ASP Functions....Burde de ikke det..???
Avatar billede wan31 Nybegynder
02. april 2004 - 01:09 #17
Klart...De skal pakkes ind når det er ASP... <%=Logon()%>
Avatar billede roenving Novice
02. april 2004 - 01:09 #18
se surferens @ 00:56:41
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:09 #19
Du skal selv kalde på funktionerne.. og du kan ikke kalde på den, uden at reloade siden.
Dvs, onload="Logon()" onunload="Logoff()"  virker *ikke*..
Avatar billede wan31 Nybegynder
02. april 2004 - 01:10 #20
Synes nu stadig ikke det virker...Hmn
Avatar billede wan31 Nybegynder
02. april 2004 - 01:11 #21
<body onload="<%=Logon()%>" onunload="<%=Logoff()%>">
og har også prøvet
<body onload="Logon()" onunload="Logoff()">
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:13 #22
Du kan ikke kalde på ASP kode, fra html siden..
Der kan du kun kalde på VBScript og JavaScript, da de 2 scriptsprog er klientside.. ASP er serverside scriptsprog..
Avatar billede wan31 Nybegynder
02. april 2004 - 01:14 #23
@ 00:56:41 >> Hvad mener du..?? Kode mæssigt, eller bare så du kan se selve siden..??
Avatar billede wan31 Nybegynder
02. april 2004 - 01:14 #24
Jeg bruger da ikke HTML sider....Det er ASP hele lortet. Selv Included filer
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:14 #25
Forstil dig at du skal sidder i stuen (klient side, browseren), og er sulten. Maden (asp koden) er i køkkenet (server side, serveren). Hver gang du vil ha' noget map (asp kode), skal du smutte ud i køkkenet..
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:15 #26
Det du ser i din browser, er ASP-generet HTML-kode :-)
Det er HTML (og sikker også JavaScript) kode.. selvom det er udskrevet af ASP.
Avatar billede roenving Novice
02. april 2004 - 01:16 #27
Så har du ikke forstået, at vi på client-siden ikke ser en millimeter asp, men kun den html-kode, som er genereret af asp-koden ...

Hvis du skal udføre noget asp, skal du lave en http-request til serveren ...
Avatar billede wan31 Nybegynder
02. april 2004 - 01:17 #28
Hvordan for jeg den så til at udføre de ASP Functions ved Onload, og Onunload..??
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:17 #29
Prøv at gå op i Vis (eller højreklik) og vælg Kilde..

Hvor blev din ASP kode af? :-)

Det ligger på serveren..
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:18 #30
Du kan ikke kalde på asp koden, når du vil.. der skal du "lette r*ven" og smutte ud i køkkenet = reload siden
Avatar billede wan31 Nybegynder
02. april 2004 - 01:18 #31
ja ja, det er jeg sku klar over....ASP bliver fortolket af serveren og oversat til HTML og sendt clienten. Det ved jeg. Men det er stadig det ASP kode der står i dokumentet der bliver afviklet
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:19 #32
Så skal du gøre sådan her:

<%
Function Logon()

Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")+1
Application.UnLock

End Function


Function Logoff()

Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")-1
Application.UnLock

End Function

Logon() ' her kaldes funktionen Logon()

%>
Avatar billede wan31 Nybegynder
02. april 2004 - 01:20 #33
Tja. Så må man jo ved hjælp af JavaScripts kunne lave en Function der fremkalder den ASp Funktion....
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:20 #34
Med asp koden, kan siden *kun* indlæses/loades..
Hvis du vil køre noget andet kode, skal du åbne en anden side.
Avatar billede wan31 Nybegynder
02. april 2004 - 01:21 #35
Ja, og Logon() skal den gøre når man logger på siden/Loader/Reloader, og Logoff() skal den så gøre ved Onunload, med andre ord Un Loader siden
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:22 #36
roenving er god til JavaScript.. og jeg kan det det også..
Men jeg tror ikke at du kan gøre det :-)

Enten så er der et eller andet du har misforstået, eller også har vi misforstået det du vil..
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:22 #37
Rigtigt: Logon() skal den gøre når man logger på siden/Loader/Reloader
Forkert: Logoff() skal den så gøre ved Onunload, med andre ord Un Loader siden

Det med Logoff():
Rigtigt: Hvis du vil køre noget andet kode, skal du åbne en anden side
Avatar billede wan31 Nybegynder
02. april 2004 - 01:23 #38
Forklare lige bedre så.

Ved Onload vil jeg have den til at lave en

Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")+1
Application.UnLock

Og ved Onunload vil jeg have til at lave

Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")-1
Application.UnLock
Avatar billede roenving Novice
02. april 2004 - 01:24 #39
Et ofte anvendt trick er at åbne et vindue, som kan medføre en fortolkning server-side, derefter skriver serveren så den kode, som selv lukker vinduet !-)
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:24 #40
<body onunload="window.open('logud.asp','','');">

indholdet af logud.asp:
Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")-1
Application.UnLock
Avatar billede wan31 Nybegynder
02. april 2004 - 01:26 #41
Ok. Lyder som en god ide. Men hvordan for jeg den så til at lukke det vindue igen selv når koden er afviklet, som roenving også snakker om..??
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:26 #42
Men der er et problem.. De fleste der bruger internettet, kan ikke lide reklame-popup.. så de installerer en eller anden form for popup-blocker, så de der popup-ikke kommer frem..
Den der popup-blocker vil også forhindre "logud.asp" i at blive loadet..
Det betyder at antal af "online users" vil stige hele tiden, og aldrig falde..
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:27 #43
<%
Application.Lock
Application("OnlineUsers") = Application("OnlineUsers")-1
Application.UnLock
%>

<script type="text/JavaScript">
self.close();
</script>

eller: window.close();
Avatar billede roenving Novice
02. april 2004 - 01:28 #44
Men du kunne gøre det samme à la roenving @ 00:56:57

-- for du kunne onunload bede den skjulte iframe om at blive ændret til logud.asp ...
Avatar billede thesurfer Nybegynder
02. april 2004 - 01:30 #45
roenving> Det kunne være en løsning på popup-problemet :-)

<body onunload="top.FRAMENAVN.location.href='logud.asp'">

Eller noget i den stil :-)
Avatar billede wan31 Nybegynder
02. april 2004 - 01:32 #46
Fatter jeg ikke lige
Avatar billede wan31 Nybegynder
02. april 2004 - 01:32 #47
Ahhh...På den måde ja
Avatar billede roenving Novice
02. april 2004 - 01:33 #48
Og en skjult iframe kunne f.eks se sådan ud:

<iframe name="FRAMENAVN" src="" style="display:none;width:0px;height:0px;"></iframe>
Avatar billede wan31 Nybegynder
02. april 2004 - 01:33 #49
Prøver jeg da lige. Jeres Iframe/Frame løsning
Avatar billede wan31 Nybegynder
02. april 2004 - 01:43 #50
Tja. Ca, ved hver 6 - 7 opdating af siden, der springer den Onunload af, og så vokser talet med en for mange for hver af de gange det sker. Men bortset fra det så virker det, men fatter nu ikke hvorfor unonload bliver sprunget over nogen gange..??
Avatar billede roenving Novice
02. april 2004 - 01:46 #51
Det er fordi onunload udføres i et adresse-rum, som er under nedlæggelse, så hvis der er det mindste i vejen, kan der være problemer med at få tid til at udføre http-requsten ...

Præcis derfor mit råd i den ovennævnte om at vedligeholde sessions og så sætte timeout på !-)
Avatar billede wan31 Nybegynder
02. april 2004 - 01:48 #52
Hmn.
Fatter bare ikke lige hvordan du vil bruge Sessions til det, men kom endelig med det, hvis det virker er det jo fint
Avatar billede roenving Novice
02. april 2004 - 02:02 #53
I iframen indsætter du en mini-side, som alene vedligeholder en session i din application, dvs. du tildeler hver åbnet side et unikt id, som du vedligeholder via en tabel i din Application ...

Sidens html-kode er ekstremt lille:

<html><body onload="setTimeout('location.reload(true)',3000)"></body></html>

Dette medfører en ny request hvert 3. sekund !-)

asp-koden, som genererer siden opretter en id eller tildeler den id et nyt tidstempel ...

Så laver du server-side en rutine, som kører f.eks. hvert 5. sekund og checker hvor lang tid siden det er, at et givet id sidst har requestet, er det f.eks. mere end 10 sek. nedlægger du id'et, for så må siden være lukket.

Initieringen af iframen klarer du ved, at du i genereringen af siden, laver en onload på en af de sider, som hører med, og så kalder start-siden til iframen:

<body onload="top.IFRAMENAVN.location.href='session.asp?id=<%=sessionId%>'">

Ved reload af hele siden checker du referrer, for at sikre dig, at du ikke knalder op og ned (men egentlig kan du være ligeglad, for indenfor få sekunder vil det alligevel være rigtigt !-)
Avatar billede wan31 Nybegynder
02. april 2004 - 02:10 #54
Ok. Så blev jeg sku aligevel for Noob til at fatte i aften.
Lad os se. Hvis en bruger logger af, hvordan skal jeg så få det I frame til at tjekke brugerens forhenværende Session ID..?? Det kræver jo at brugeren er online mens siden reloades/ for at siden reloades for at være precis....
Avatar billede wan31 Nybegynder
02. april 2004 - 02:16 #55
Se, jeg kan lave så brugeren f.eks har en ID der hedder brugerens IP, og få den Session til at lave en timeout efter et hvis antal tid osv...Og hvis brugeren så ikke er logget af, men gør sig aktiv ved f.eks at trykke på et link, få Iframet til at tilføje IDen igen, og på den måde få talet til at passe for det meste, men ihvertfald få det til at en nogen lunne lige kurs....MEN som sagt, det kræver at jeg hele tiden kan udføre et stykke kode, og hvis brugeren er logget af
Avatar billede wan31 Nybegynder
02. april 2004 - 02:17 #56
For som sagt, så skal den Session lægges i en Application, og hvis IDen/Sessionen udløber skal den ID trækes fra den Application.
Avatar billede roenving Novice
02. april 2004 - 02:20 #57
Ja, det ville være en ide at bruge ip-adressen, men du skal være opmærksom på, at dynamiske ip-adresser kan ændres forholdsvis ofte ...
Avatar billede wan31 Nybegynder
02. april 2004 - 02:20 #58
Men selvf. Talet vil jo hele tiden være næsten up to date bare EN bruger er online, og så længe ingen er online er det ligemeget, for så updatere det igen, lige så snart en bruger kommer på
Avatar billede roenving Novice
02. april 2004 - 02:21 #59
Jepz
Avatar billede wan31 Nybegynder
02. april 2004 - 02:21 #60
Tja, de skifter ja. Men hvordan laver jeg en ID uden at bruge IP så..?? Så kræver det jo en slags auto numerering ligesom en database...
Avatar billede wan31 Nybegynder
02. april 2004 - 02:24 #61
Hmn. Tja hvis de skifter, så skifter de jo, så for brugeren jo bare en ny ID, mens den gamle slettes, og så vil tallet jo passe aligevel
Avatar billede roenving Novice
02. april 2004 - 02:24 #62
Jeg ved at php har en microtime-funktion, som kan generere et tidspunkt på mikrosekunder, der er vel noget i nærheden af det på en asp-ting også ?-)

-- eller du må kunne finde en auto-numererings-/unik-ting i Application

-- og både du og brugeren kan være ligeglad med tallets længde !-)
Avatar billede wan31 Nybegynder
02. april 2004 - 02:30 #63
Når. Mangler svar....
Mere besværlig måde, men til gengæld også den mest precise.
Træls at stå efter to dage med et online user tal på 250, og der kun er 2 *G*
Avatar billede roenving Novice
02. april 2004 - 02:38 #64
Jamen, så velbekomme '-)

-- men det ser ud til, at surferen hoppede fra for en times tid siden, så du kan vel vente, til han kommer på igen, med at lukke ?-)
Avatar billede wan31 Nybegynder
02. april 2004 - 02:41 #65
Yep.
Det går nok :-))
Avatar billede grunken Nybegynder
02. april 2004 - 02:51 #66
hmm, så lige dette ?

Hvis der alligevel skal bruges sessions, hvofor så ikke bare time dem out efter et minut ? :o)

Så er den fis jo slået :o)
Avatar billede roenving Novice
02. april 2004 - 03:20 #67
Det var jo åbenbart ikke wan21s kop te, den blev foreslået imellem de første 5-15 indlæg !-)
Avatar billede grunken Nybegynder
02. april 2004 - 03:33 #68
okay :o)

så er jeg sikkert bare lige til nærsynsinstituttet, for kan nu ikke lige se den :o)
Avatar billede roenving Novice
02. april 2004 - 03:40 #69
Det 14. indlæg !-)
Avatar billede roenving Novice
02. april 2004 - 03:41 #70
roenving @ 02/04-2004 00:56:57
Avatar billede grunken Nybegynder
02. april 2004 - 04:03 #71
aha :o)

men jeg tror nu alligevel vi lige går (skriver) lidt forbi hinanden :o)

Man kan som du skriver i "00:56:57" sagtens checke for evt. timestamps i en session, alternativt vha. javascript...hvis givne regler ikke er opfyldt vil asp tømme den, meen, jeg mener som følger at asp automatisk kunne stå for den slags, det lyder til at han server har et problem , eftersom den ikke har fjernet en eneste efter 2 dage :o)

nedenstående gemmes bare i global.asa i roden af et website :o)

Sub Application_OnStart
    Application("ActiveUsers") = 0
End Sub

Sub Session_OnStart
    Session.Timeout = 1 //antal minutter :o)
    Session("Start") = Now
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") + 1
    Application.UnLock
End Sub

Sub Session_OnEnd
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") - 1
    Application.UnLock
End Sub

På ovennævnte måde vil det hele foregå fuldautomatisk :o), dog med et delay på et minut!
Avatar billede wan31 Nybegynder
02. april 2004 - 11:24 #72
Se den global.asa ting har jeg prøvet. Problemet ved den var at den ikke registrede Session_OnEnd. Så folk kom ind, men ikke ud igen. Jeg har dog ikke testet den sammen med den Session ID, og kan ikke se hvordan den skulle hjælpe. Lille forklaring..??
Avatar billede wan31 Nybegynder
02. april 2004 - 11:51 #73
Tja kan godt se ideen nu. Smart nok.
Avatar billede thesurfer Nybegynder
02. april 2004 - 16:37 #74
Jeg kan forstå, at I mangler et svar fra mig? :-)
Hvis ja: svar :-)
Avatar billede wan31 Nybegynder
02. april 2004 - 17:38 #75
Nice. Så mangler jeg bare grunken...
Gode svar fra jer alle. Har en god ide til at lægge lidt af det sammen for at få bedst effekt :-)
Avatar billede grunken Nybegynder
04. april 2004 - 16:37 #76
Jeg springer over points :o)

Mit indlæg var bare en hurtig tanke, som bevæger sig helt uden for kategorien!

Roenving og surfer, har arbejdet ihærdigt for løsning...derfor skal de også have points...!

btw, go påske gutter :o)
Avatar billede thesurfer Nybegynder
04. april 2004 - 17:15 #77
I lige måde :-)
Og også til alle andre Eksperten-medlemmer :-)
Avatar billede wan31 Nybegynder
05. april 2004 - 01:33 #78
Det er bare i orden :-)
Og jeg takker alle som hjalp til med lidt ideer...

Og god påske til jer også :-D
Avatar billede roenving Novice
05. april 2004 - 01:40 #79
-- tak for points ;~}

-- og fortsat god påske !-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester