Ik heb een pagina met uitklapmenu's die zo'n 15 seconden laadt. De meeste preloaders zorgen ervoor dat het uitklapmenu niet meer werkt.
Daarom zoek ik het volgende:
als de hoofdpagina wordt geopend, opent er zich een tweede pagina vóór de hoofdpagina. (de inhoud vul ik zelf in). Na 15 seconden moet ie verdwijnen.
Een pagina die 15 seconden laadt? Doe daar eerst iets aan...
Maar je kan een grote div voor je pagina zetten, en die met javascript laten verdwijnen. Let wel op dat je onload()-event pas wordt uitgevoerd als hij klaar is met laden, behalve in Safari.
persoonlijke mening: ik zou zeker geen intro plaatsen op bijna gelijk welke site dan ook. Dat mag dan ook zo mooi zijn om naar te kijken, of te zeggen dat het indrukwekkend is. Veel gebruikers letten daar uiteindelijk niet op en zullen dat juist als irritand ervaren (want ze zijn meer geïnteresseerd in de inhoud van de site)
http://jaron.nl...oad-events/
Kan je bijvoorbeeld gebruiken om een div te creëren vòòr de pagina geladen is (in alle browsers). Deze div kan je na 15 seconden terug verwijderen.
Het is altijd mogelijk die 15 seconden te verlagen. Anders kun je je content opdelen in verschillende stukken, en die na elkaar laden, doormiddel van AJAX. Dan krijgt de bezoeker in ieder geval al een gedeelte content te zien.
Door een php PHP.net: flush te gebruiken direct na je head kun je je headers versturen. PHP.net: echo verzamelt namelijk alle echo's tot het einde van het script in een output buffer. Wanneer je PHP.net: flush eerder aanroept wordt dat gedeelte van de content al vast naar de browser gestuurd. Wanneer je het aan het einde van je head doet, zal hij ook meteen de CSS scripts inladen.
Let wel op, PHP.net: flush heeft een aantal minimum regels. Sommige browsers verwerken dit pas bij een bepaalde grote aan browsers.
echo "Regel 1<br />\n";
sleep(10);
echo "Regel 2<br \>\nAls je de regels tegelijk ziet staat output buffering aan, als er 10 seconden pauze tussen de regels zit staat het uit";
<?
echo "Regel 1<br />\n";
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n<br />\n";
echo "Eerste sleep(10)<br />\n<br />\n";
sleep(10);
echo "Regel 2<br \>\n";
echo "Als je de regels tegelijk ziet staat output buffering aan, als er 10 seconden pauze tussen de regels zit staat het uit<br \>\n";
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n<br />\n";
echo "Flush hierna.<br />\n<br />\n";
flush();
echo "Tweede sleep(10)<br />\n<br />\n";
sleep(10);
echo "Deze regel komt weer later<br \>\n";
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
?>
echo"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n<br />\n";
echo"Als je de regels tegelijk ziet staat output buffering aan, als er 10 seconden pauze tussen de regels zit staat het uit<br \>\n";
echo"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n<br />\n";
echo"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
echo"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br />\n";
?>
Het voordeel van de flush is dat de browser the afbeeldingen en scripts, etc. al kan preloaden. Maar goed, in de Google IO video vertelt de expert er meer over.
Jouw script gaat niet op, omdat er te weinig data wordt verstuurd, zodat de browser het nog niet verwerkt.
Gooi er een aantal alinea's Lorem Ipsum tussen. Zou moeten werken.
<?
echo "<div align=\"center\">
<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">Een ogenblik aub, de pagina is aan het laden...</font></p>
<p><img src=\"preloader.gif\"></p>
</div>";
flush();
sleep(10);
echo "<div align=\"center\"><a href=\"javascript:window.open('','_parent');window.close();\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">De pagina is nu geladen.<br>Sluit dit venster aub</font></a></div>";
?>
echo"<div align=\"center\"><a href=\"javascript:window.open('','_parent');window.close();\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">De pagina is nu geladen.<br>Sluit dit venster aub</font></a></div>";
als je php sleep(x) gebruikt, doet je hele script gewoon x seconden niets.
edit: Dus haal die flush() en sleep is weg
edit2:
Over de flush() ik gebruikte m laatst, en de site werd er trager van. Volgens mij heeft tpas zin als je head veel info heeft, en een gewoon huistuin en keuken siteje niet
Die sleep vertraagt het hele process met 10 seconden. De server gaat eigenlijk 10 seconden lang op zijn gat zitten en niets doen, tot de 10 seconden voorbij zijn. Dan gaat hij weer heerlijk zijn best doen.
Wat je beter kan doen:
Aan het einde van je HTML een dat bericht aan je paneel toevoegen, dan voegt hij het dus toe nadat hij de rest geladen heeft. Dit kun je op allerlei verschillende manieren doen.
Maar ik zou echt als eerste je wachttijden verkorten. Want het is vrijwel onmogelijk dat een normale website 15 seconden nodig heeft om te laden. Er moet iets niet helemaal goed zitten.
Je hebt de index, en die zorgt er voor dat er nog een 2de pagina opengaat, een soort van popup. In die popup staat de tekst "even geduld". En na 10 a 15 seconden zegt ie dat je de popup kunt sluiten. Dat is ongeveer de tijd die de index pagina nodig heeft om te laden.
Ik kon die popup ook vanzelf laten verdwijnen, maar dan krijg je zo een windows alert schermpje dat de pagina zichzelf probeert te sluiten of zoiets.
We snappen het probleem Gust. Maar wat jij wil is een loader voor iets wat in eerste instantie helemaal niet lang zou moeten hoeven laden. De tijd die jouw script nodig heeft is gewoon te lang. Daar gaat iets mis.
Die hele loader zou je niet nodig moeten hebben. Dus als je ons advies aan zou willen nemen en even met ons naar de code wil kijken. Dan zou het probleem een stuk makkelijker opgelost moeten kunnen worden.
EDIT:
Ik heb even een kijkje genomen, en je maakt een MONSTERLIJK LANG formulier aan. Is dit formulier niet beter op te delen in verschillende stappen? Dat je dus eigenlijk door een "survey" geleidt wordt? Dat is ook veel gebruikersvriendelijker.
EDIT2:
De pagina doet er bij mij maar maximaal 2 seconden over om te laden. Dus ik snap het hele idee van jouw fake popup toch niet.