Avatar billede newbie.dk Praktikant
25. marts 2004 - 21:33 Der er 35 kommentarer og
2 løsninger

Skriv siden loades, mens næste hentes

Ved en side har jeg en formular. Fra brugeren har udfyldt og send data afsend kan der godt gå et lille stykke tid.
Mens siden loades vil jeg gerne have at der kommer noget tekst op der forklare at folk skal vente lidt. Bare så de ikke lukker før tid.
Avatar billede voirsous Nybegynder
25. marts 2004 - 21:37 #1
<input type="submit" onclick="alert('det her tager tid - så slap af!')" value="Boys and Girls">
hehe :)
Avatar billede thesurfer Nybegynder
25. marts 2004 - 21:38 #2
Der er flere måder at gøre det på.. de bruger, så vidt jeg ved, alle en form for frame/iframe metode..

f.eks.
1) du kan have din formular i en iframe, og ved submit, ændre indholdet af et span/div tag. den side der loades efter at data er sendt/gem, loader sig selv i top-vinduet, hvis det ikke allerede er det.

2) du kan bruge frames.

Hvilken en lyder bedst?
Avatar billede newbie.dk Praktikant
25. marts 2004 - 21:43 #3
Det ved jeg faktisk ikke. Kender ikke iframes. Og frames havde jeg ikke lige tænkt mig at bruge. Men hvis det er de muligheder der er må jeg lige tænke lidt over det. Håber ikke jeg skal skrive alt for meget om.
Avatar billede olebole Juniormester
25. marts 2004 - 22:11 #4
<ole>

Der er måske også andre muligheder, men det kræver, vi har noget mere info. Hvad sender du med formen - og hvad er det, der tager tid i processen?

/mvh
</bole>
Avatar billede thesurfer Nybegynder
25. marts 2004 - 22:15 #5
et simpelt eksempel:


Et -- siden med iframen (index.asp):

<iframe src="form.asp" frameborder="0" width="768" height="400"></iframe>
<br>
<span id="besked"></span>

..resten af koden her..

-- selve formularen (form.asp):

<form name="minform" action="gem.asp" onsubmit="top.besked.innerHTML = 'Data sendes.. vent venligst..';">
<input type="text" name="etfelt">
<input type="submit" value="Send">
</form>

..resten af koden her..


-- siden der gemmer/sender data (gem.asp):
<script type="text/JavaScript">
if (top.location.href != document.location.href) top.location.href = document.location.href;
</script>

..resten af koden her..
Avatar billede olebole Juniormester
25. marts 2004 - 22:19 #6
document.location blev deprecated for 5-6 år siden. Det hedder window.location  :)
Avatar billede thesurfer Nybegynder
25. marts 2004 - 22:21 #7
if (top.location.href != window.location.href) top.location.href = window.location.href;

Godt nok, eller skal jeg fjerne "href"? :-)
Avatar billede newbie.dk Praktikant
25. marts 2004 - 22:28 #8
Jeg fandt denne her på eksperten.dk http://www.eksperten.dk/spm/272645:

<script>
function visSkjul() {
if (document.getElementById) {
document.getElementById("loading").style.visiblity = "hidden"; document.getElementById("indhold").style.visiblity = "visible";
}
else if (document.all) {
document.all.loading.style.visiblity = "hidden"; document.all.indhold.style.visiblity = "visible";
}
else
alert("Din browser egner sig desværre ikke til at vise dette site. Så det er bare ærgerligt.");
}
</script>

<body onLoad="visSkjul();">
<div id="loading" style="visibility: visible; position: absolute; left: 0px; top: 200px; width: 100%; height: 40px; text-align: center; color: red; font-size: 30px; font-family: Arial;">
Vent venligst, mens siden indlæses...
</div>
<div id="indhold" style="visibility: hidden;">
...
HER ER DIT NORMALE INDHOLD!
...
</div>
</body>

Men godt skriver den hvad den skal (Vent venligst...), men den hopper ikke videre til næste side. Hvis jeg kigger på kildekoden, er det hele der, men det bliver bare ikke vist. ØV.
Jeg kan ikke se mig ud af spm'et om den kun virker i IE5+ NN6. Vil jo gerne være på den sikkere side.

På slut-side, er der noget ASP og en JavaApplet.
Avatar billede olebole Juniormester
25. marts 2004 - 22:30 #9
Nejnej, thesurfer - den er helt rigtig  ;o)

Dokumentet har stadig et location-objekt, men man bør bruge window-objektets location-objekt i stedet, da de to ikke altid er ens - og derfor er 'document.location' blevet deprecated  :)
/mvh
Avatar billede olebole Juniormester
25. marts 2004 - 22:32 #10
newbie.dk >> Den kan du ikke bruge i dette tilfælde - men prøv at svare på mit første spørgsmål til dig  :)
Avatar billede thesurfer Nybegynder
25. marts 2004 - 22:37 #11
hmm.. kommer faktisk i tanke om et andet spm jeg har deltaget i.. uden frame/iframes

din formular side:
<form ... action="gem.asp">

gem.asp:
<% response.buffer = false %>
<html>
<head>
</head>
<body>
<span id="besked">Data sendes.. vent venligst</span>

<%
' din side her
%>

<script type"text/JavaScript">
document.getElementById("besked").style.display="none";
</script>
</body>
</html>


olebole> er der problemer med ".style.display", mht crossbrowser?
Avatar billede newbie.dk Praktikant
25. marts 2004 - 22:38 #12
I formen sendes der data til en database, navn, tal, email mm.
På slut-side, er der noget ASP og en JavaApplet. Det tager et stykke tid idag, nu vil jeg gerne have et billede ind på slut-siden. Så kommer det til at tage lidt mere tid, derfor gerne en besked om tålmodighed.
Avatar billede thesurfer Nybegynder
25. marts 2004 - 22:38 #13
<%
' din side her
%>

skulle være:

<%
' din kode her
%>
Avatar billede newbie.dk Praktikant
25. marts 2004 - 22:40 #14
Og hvorfor kunne man ikke bruge eksemplet fra http://www.eksperten.dk/spm/272645 i mit tilfælde? Bare lige kort :)
Avatar billede thesurfer Nybegynder
25. marts 2004 - 22:44 #15
1) Den burde virker
2) Den skal jo ikke hoppe videre til næste side, da det er siden der sender/gemmer..

for eksempel:
form.asp (selve formularen)
<form action="gem.asp">

gem.asp (siden der gemmer og sender):

<script>
function visSkjul() {
if (document.getElementById) {
document.getElementById("loading").style.visiblity = "hidden"; document.getElementById("indhold").style.visiblity = "visible";
}
else if (document.all) {
document.all.loading.style.visiblity = "hidden"; document.all.indhold.style.visiblity = "visible";
}
else
alert("Din browser egner sig desværre ikke til at vise dette site. Så det er bare ærgerligt.");
}
</script>

<body onLoad="visSkjul();">
<div id="loading" style="visibility: visible; position: absolute; left: 0px; top: 200px; width: 100%; height: 40px; text-align: center; color: red; font-size: 30px; font-family: Arial;">
Vent venligst, mens siden indlæses...
</div>
<div id="indhold" style="visibility: hidden;">
...


-- DIN ASP KODE, TIL AT GEMME OG SENDE, INDSÆTTES HER --


...
</div>
</body>
Avatar billede olebole Juniormester
25. marts 2004 - 22:50 #16
thesurfer, my friend .... det var præcis noget i den retning, jeg havde i tankerne. Jeg ville blot spare mine små, gigtsvage fumlevorter - og have at vide, hvad der skulle sendes, inden jeg skrev et eksempel.
Eksemplet er nemlig ikke så godt ved billed-upload, som oftest er det, der spørges om i den slags tilfælde  ;o)
...og nej - 'style.display' giver ingen problemer med X-browser kompatibilitet. Så skal vi i hvert fald have fat i nogle 'antikviteter'  :)
/mvh
Avatar billede thesurfer Nybegynder
25. marts 2004 - 22:54 #17
hehehe.. :-)
Avatar billede newbie.dk Praktikant
25. marts 2004 - 23:02 #18
thesurfer, dit indlæg 22:37:30 kan jeg ikke få til at virke.
Indlæg 22:44:12, giver samme resultat som den jeg havde fundet.
Teksten "Vent venligst, mens siden indlæses..." bliver stående, og jeg ser ikke min kode. Men den står godt nok i kildekoden for siden.
Avatar billede thesurfer Nybegynder
25. marts 2004 - 23:05 #19
Du kan ikke se ASP-kode via Vis Kilde (eller andre metoder) i din browser :-)
Det er det du mener, ik?
Avatar billede newbie.dk Praktikant
25. marts 2004 - 23:12 #20
Nej.
Teksten "Vent venligst, mens siden indlæses..." bliver stående. Og så sker der ikke mere.
Men hvis jeg vælger vis kilde, kan jeg se at al den kode som skulle kunne ses ligger i kildekode, men bliver bare ikke vist på skærmen.
Avatar billede thesurfer Nybegynder
25. marts 2004 - 23:13 #21
Giv et eksempel.. eller bedre: et link til en side..
Avatar billede newbie.dk Praktikant
25. marts 2004 - 23:24 #22
Jubii. Jeg har fået denne til at virke.

<body onLoad="document.all['loading'].style.display = 'none'; document.all['siden'].style.display = '';">
<span id="loading" style="display: ;"><div align="center"><font color="#0000ff"><strong>Loader...Vent venligst!</strong></font></div></span>
<span id="siden" style="display: none">
<br>
<br>
HER ER DIT INDHOLD, BILLEDER M.M
<br>
<br>
</span>
Avatar billede thesurfer Nybegynder
25. marts 2004 - 23:27 #23
måske tager jeg fejl, men jeg tror at document.all er Internet Explorer.. dvs det virker kun i Internet Explorer..

Det kan være at olebole har en kommentar..
Avatar billede olebole Juniormester
25. marts 2004 - 23:35 #24
document.getElementById("loading").style.display
...er den korrekte syntaks. 'document.all' er proprietær IE-kode - som den skizoide Opera dog også kan forstå, når den af og til tror, den er en IE (kommer anpå bruger-indstillinger)  :)
Avatar billede newbie.dk Praktikant
26. marts 2004 - 00:26 #25
Hvis jeg bruger document.getElementById("loading").style.display
får jeg fejl i linien. og processen stopper.

<body onLoad="document.getElementById("loading").style.display = 'none'; document.getElementById("loading").style.display = '';">
<span id="loading" style="display: ;"><div align="center"><font color="#008080" face="Verdana" size="5"Data sendes... vent venligst</font></div></span>
<span id="siden" style="display: none">
Avatar billede thesurfer Nybegynder
26. marts 2004 - 00:36 #26
det er nok fordi du bruger " (gåseøjne) både ved onLoad=" og ById("
Brug " ved onload=" og et enkelt ' (apostrof) ved reste.. og så " (gåseøjne) ved slutningen: ">
Avatar billede thesurfer Nybegynder
26. marts 2004 - 00:37 #27
Sådan her (klar til indsættelse):

<body onLoad="document.getElementById('loading').style.display = 'none'; document.getElementById('loading').style.display = '';">
Avatar billede newbie.dk Praktikant
26. marts 2004 - 00:51 #28
Mærkeligt, nu gør den det samme igen. den stopper.
Avatar billede thesurfer Nybegynder
26. marts 2004 - 00:53 #29
hmm.. hvad tænker jeg på... :-)

Det burde være:
<body onLoad="document.getElementById('loading').style.display='none';">

Prøv det..

Ellers må du smide hele koden herind.. så er det nemmere at finde fejlen..
Avatar billede olebole Juniormester
26. marts 2004 - 00:56 #30
Mon ikke, det er dit semikolon, der giver fejlen - det så jeg først nu  :)

Prøv:
  <body onLoad="document.getElementById('loading').style.display = 'none'; document.getElementById('siden').style.display = 'block';">

Det skulle gerne funke  :)
Avatar billede olebole Juniormester
26. marts 2004 - 00:57 #31
Se bort fra mit vrøvl om semikolon'er - den gamle mand fabler - men prøv eksemplet  :D
/mvh
Avatar billede newbie.dk Praktikant
26. marts 2004 - 23:03 #32
olebole, den virker fint.
Kan den også bruges i NS og andre browsere?
Avatar billede olebole Juniormester
26. marts 2004 - 23:23 #33
Ja, du skal temmelig langt tilbage, før du finder en bruser, hvor det ikke virker  :)
Avatar billede newbie.dk Praktikant
27. marts 2004 - 00:01 #34
Det lyder rigtigt godt.
Så må du hellere ligge et svar.
Tak for hjælpen. Begge to.
Avatar billede olebole Juniormester
27. marts 2004 - 00:05 #35
Mit svar er betinget af, at thesurfer også svarer - og at vi kan dele  :)
/mvh
Avatar billede roenving Novice
27. marts 2004 - 00:09 #36
Er den nyeste hovedversion, hvor det ikke virker, ikke Internet Explorer 4 ?-)
Avatar billede thesurfer Nybegynder
27. marts 2004 - 01:43 #37
Så må jeg heller lægge et svar :-)
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