26. oktober 2004 - 15:29Der er
22 kommentarer og 1 løsning
Timeglas/popup ifm reload af siden
Hejsa
Jeg har en JSP-side hvor der til tider foregår nogle tidskrævende aktiviteter. Når siden så kalder sig selv, ønsker jeg at lave et popup-windue der virker lidt på samme måde som et timeglas - altså informerer brugeren om at serveren arbejder.
Men jeg har ikke rigtig kunne få det til at virke.
Har et javascript der lavet mit popup-windue: UserMessagePopup(msg){ var popupwindue = window.open(......); var str = "<en masse html>"; popupwindue.document.write(str); popupwindue.document.close(); }
Inden i <en masse html> har jeg bl.a.: setTimeout('self.close()',10000)
Nu vil jeg gerne om dette javasript blev kaldt som det først af alt hvad sker på siden, så popup bliver vist - og at der bliver kørt en popup.close(); som det sidste på siden.
Hvordan kan dette lade sig gøre - hvis det er muligt?
Jeg forventede et eller andet i retning af at kunne benytte < body onload=...> til at starte scriptet som det første der sker. men kan ikke få det lukket igen, uden at bruge timer. Og det er lidt ufiks at bruge en timer der først lukker længe efter siden er loaded....
Hvis du genbruger windowName (2. parameter i window.open !-) kan du tilgå det samme popup-vindue, og så f.eks. bare sende:
var pop = window.open('','popup'); var txt = '<scr'+'ipt type="text/javascript">self.close()<\57scr'+'ipt'; pop.document.write(txt); pop.document.close();
function UserMessagePopup(msg){ var popwin = window.open("","popwin","toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=320,height=120");
Mit problem lige nu er at popup først kommer når siden er ved at være færdig med at loade. Så det er kun et split sekund man ser popup - og ikke mens der loades og laves det tidskrævende arbejde.
-- og så er det noget gris at bruge java script: pseudoprotokollen i en javascript-event, da det selvfølgelig er overflødigt at fortælle javascript, at den skal udføre javascript-kommandoer ...
-- at det så er ugyldig javascript-kode er vist et akademisk spørgsmål, da alle de browsere, jeg har set, ikke kløjs i det !-)
-- og hvad er nnitFlytFiler for noget, er det sådan koden ser ud i browseren, for jeg kan ikke finde nogen objekter, som hedder sådan ...
-- og hvis du så vil tvangslukke popuppen, når den nye side er indlæst, placerer du blot ovenstående sidst i den nye fil:
<script type="text/javascript"> var pop = window.open('','popwin'); var txt = '<scr'+'ipt type="text/javascript">self.close()<\57scr'+'ipt>'; pop.document.write(txt); pop.document.close(); </script>
java script: function UserMessagePopup(msg){ var popwin = window.open("","","toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=320,height=120");
Har en <body> der er sådan her: <body onbeforeunload="UserMessagePopup('Vent venligst ....')" >
og har til sidst som roenving skrev: </html> <script type="text/javascript"> var pop = window.open('','popwin'); var txt = '<scr'+'ipt type="text/javascript">self.close()<\57scr'+'ipt>'; pop.document.write(txt); pop.document.close(); </script>
som det sidste - helt efter </html>.
Men jeg får en fejl ved afvikling: Line 816 Char 1 Access is denied Code: 0
"Line 816" er lige med "pop.document.close();" når jeg tager "view source" på siden.
Den loader, men vises med fejl - og der åbnes 2 popup, hvor ingen lukkes før end efter de 10sek.
function UserMessagePopup(msg){ var popwin = window.open("","popwin","toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=320,height=120");
<script language="javascript" type="text/javascript"> var pop = {'closed':true} function lukVindue(){ var pop = window.open('','Karl'); var txt = '<scr'+'ipt type="text/javascript">self.close()<\57scr'+'ipt>'; pop.document.write(txt); if(!pop.closed)pop.document.close(); } </script> </body> </html>
Har forsøgt med din sidste kode: <script language="javascript" type="text/javascript"> var pop = {'closed':true} function lukVindue(){ var pop = window.open('','popwin'); var txt = '<scr'+'ipt type="text/javascript">self.close()<\57scr'+'ipt>'; pop.document.write(txt); if(!pop.closed)pop.document.close(); } </script> </body> </html>
Den får bare ikke lukket for popup-winduet.
Men hvis jeg benytter følgende kode: <script type="text/javascript"> var pop = window.open('','popwin'); var txt = '<scr'+'ipt type="text/javascript">self.close()<\57scr'+'ipt>'; pop.document.write(txt); </script>
så virker det ????
Det forstår jeg jo ikke meget af, idet jeg jo ikke afvikler nogen close() på noget tidspunkt???
Men der er vil visse ting her i verden som man ikke skal kunne forklarer - en af tingene kan så være den her........
Smid et svar roenving, og få nogle fortjente point. Du har været en stor hjælp!
-- tjah, du udfører jo den self.close(), som ligger i scriptet, for document.close() har en fuldstændig anderledes funktion, nemlig at fortælle browseren, at den ikke skal forvente, at der kommer mere html-kode, så den roligt kan gå i gang med at tegne siden ...
Når jeg lukker hele siden ned - f.eks. ved at trykke på browserens kryds oppe i højre hjørne - så starter popup, men det lukkes jo ikke før end timeout er nået.
Det tror jeg ikke, for det er ikke lykkedes mig at finde nogen metode (som var bare nogenlunde sikker !-) til at detecte brugerhandlinger udenfor browserens bruger-vindue ...
Synes godt om
Ny brugerNybegynder
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.