2009-12-15 5 views
5

Ma page prend un certain temps à charger une variété de commandes et d'images de menu. Je veux montrer une fenêtre popup avec une barre de progression dessus. L'utilisateur ne doit pas pouvoir accéder à la page d'origine sur le navigateur Web lorsque cette fenêtre contextuelle est affichée.Verrouillez l'écran avec une fenêtre contextuelle jusqu'à ce que la page de temps soit entièrement chargée

Lorsque la page est complètement chargée, cette fenêtre contextuelle doit disparaître. Comment faire ça?

+6

Ergh ... Réalisez-vous ce que vous essayez de faire pour vos utilisateurs? (Humph, désolé, mais ne pouvait pas résister: Je ne reviendrai pas à un site Web qui fait cela!) –

+1

Que faire si la connexion à une image minuscule échoue? La page entière ne serait pas utilisable à cause de cette petite image. – Gumbo

+0

Martin, je suppose que quelque chose est idiot de ma part. Pouvez-vous s'il vous plaît suggérer la meilleure approche? – RKh

Répondre

9

La façon la plus simple de le faire serait de superposer - un <div> absolument positionné qui couvre toute la page et qui a un z-index élevé. Une fois le chargement de votre page terminé (c'est-à-dire les incendies d'événement loaded), vous pouvez supprimer le <div>.

Un exemple grossier à des fins de style:

<html> 
<head> 
<style type="text/css"> 
#loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: #000; opacity: 0.7; } 
#loading-message { position: absolute; width: 400px; height: 100px; line-height: 100px; background-color: #fff; text-align: center; font-size: 1.2em; left: 50%; top: 50%; margin-left: -200px; margin-top: -50px; } 
</style> 
</head> 
<body> 
<div id="loading-overlay"></div> 
<div id="loading-message">Loading page, please wait...</div> 
<!-- rest of page --> 
<p>The rest of the page goes here...</p> 
</body> 
</html> 

Soyez conscients que les contrôles peuvent avoir leur propre événement « chargé » (par exemple <img> balises font), qui peut tirer après que la page a complètement terminé. Vous devriez expérimenter pour être certain.

1

Vous pouvez avoir un div qui couvre tout l'écran et dans le gestionnaire window.load masquer cet élément, mais je suis d'accord avec le commentaire ci-dessus. Ne faites pas cela à vos utilisateurs.

2

C'est une coutume que je l'ai utilisé sur un de mes applications Custom Cloud: NGEN Preload Screen

Voir la source pour l'action body.onload ...

Ne hésitez pas à utiliser à votre guise ...

Questions connexes