Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2011, 09h39   #1
Invité de passage
 
Inscription : mai 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 17
Points : 2
Points : 2
Envoyer un message via MSN à neoxen Envoyer un message via Skype™ à neoxen
Par défaut Attendre le chargement d'un contenu dans une div

Bonjour a tous,

Voila je suis actuellement sur un projet qui est de développer ma propre version d'une dialog box (en gros une div en position absolute qui contient du texte et des images)

Pour cela j'ai utiliser cette méthode
Code :
1
2
3
4
5
 
$('<div id="dialogBox"></div>').appendTo('body').html('un contenu html avec image <img src="Source.gif">');
$('#'+config.boxId).css({
    position:'absolute'
});
Le problème est que je souhaite possitionner cette boite au milieu du l'ecran.
Pour cela je regarde la largeur et la hauteur de la box "dialogBox" avec
Code :
1
2
3
 
console.log($('#'+config.boxId).width());
console.log($('#'+config.boxId).height());
Et c'est la que je me rend compte que le résultat donné correspond a la hauteur et la largeur de la box avant le chargement de l'image.

Ma question est donc, peut-on attendre le chargement complet d'une div avant de regarder sa hauteur et sa largeur ?
neoxen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 09h41   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
en tablant sur le fait que le plus long à charger sera l'image, tu peux essayer de passer par le onload de l'image ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 10h15   #3
Invité de passage
 
Inscription : mai 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 17
Points : 2
Points : 2
Envoyer un message via MSN à neoxen Envoyer un message via Skype™ à neoxen
le problème c'est que c'est un contenu dynamique qui est chargé, donc je ne peut pas mettre de onload sur les images :s
neoxen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 10h24   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
Citation:
donc je ne peut pas mettre de onload sur les images
Ha bon pourquoi donc ?

Code :
$('<div id="dialogBox"></div>').appendTo('body').html('un contenu html avec image <img src="Source.gif" onload ="....">');
sinon avec jquery:
Code :
1
2
3
 
$('<div id="dialogBox"></div>').appendTo('body').html('un contenu html ">');
$('#dialogbox').append($('<img />').attr('src','source.gif').load(function(){ ...})
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h37   #5
Invité de passage
 
Inscription : mai 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 17
Points : 2
Points : 2
Envoyer un message via MSN à neoxen Envoyer un message via Skype™ à neoxen
pour ce qui est du onload sur l'image ce n'est pas possible car c'est un contenu dynamique qui est chargé ( il peut y avoir 1,2,3 ou X image en chargement )

Donc pour la deuxième solution ce n'est pas non plus possible :s.

Mon but et de charger un contenu html.

Imaginons je suis sur un formulaire, je fais des vérifications et la j'ai une erreur. La dialog box s'affiche avec un texte préformaté html, d'ou l'impossibilité de mettre des onload
neoxen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h42   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 040
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 040
Points : 45 141
Points : 45 141
je ne vois toujours pas de contre indications qu'il y ait une ou 15 images
il suffit d'incrémenter un compteur pour savoir quand la dernière image est chargée ???

Sinon l'idéal serait de passer par un evènement jquery avec un callBack comme load ...
Si tu peux générer coté serveur ton bout de code html ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h48   #7
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Citation:
Envoyé par neoxen Voir le message
Ma question est donc, peut-on attendre le chargement complet d'une div avant de regarder sa hauteur et sa largeur ?
Bonjour

Je vous suggère d'étudier le code de cet exemple : http://www.developpez.net/forums/d82...y/#post5830691.
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 16h07   #8
Invité de passage
 
Inscription : mai 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 17
Points : 2
Points : 2
Envoyer un message via MSN à neoxen Envoyer un message via Skype™ à neoxen
merci pour le lien danielhagnoul, je n'est pas trouvé ce que je cherché mais je vais étudier un peu le système je pense avoir eu une idée
neoxen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 19h34   #9
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Je pensais que l'exemple du positionnement (en deux étapes) du dialogue modal reteindrait votre attention. Mais si vous avez trouvé mieux...

Extrait :
Code :
1
2
3
4
5
6
7
8
9
10
                objPopup
                    .css("width", popupWidth)
                    .prepend('<img src="http://sohtanaka.developpez.com/tutoriels/javascript/creez-fenetre-modale-avec-css-et-jquery/fichiers/close_pop.png" class="popup-btn-close" title="Close Window" alt="Close" />')
                    .css({
                        // Si l'on regroupe les deux blocs CSS, le popup n'est pas bien positionné
                        // Le popup doit avoir sa taille définitive avant le calcul de outerHeight et de outerWidth
                        "margin-top":  -objPopup.outerHeight(true)/2,
                        "margin-left": -objPopup.outerWidth(true)/2
                    })
                    .fadeIn();
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 09h47   #10
Invité de passage
 
Inscription : mai 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 17
Points : 2
Points : 2
Envoyer un message via MSN à neoxen Envoyer un message via Skype™ à neoxen
j'ai effectivement vu cet exemple mais j'ai procéder autrement

dans mon objet de creation de la dialog box j'ai fait comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
this.create=function(){
	$('<div id="shadow_'+ config.boxId +'"></div>').appendTo('body').css({
	    'width':config.widthPage,
	    'height':config.heightPage,
	    'position':'absolute',
	    'background-color':config.backgroundShadow,
	    'top':0,
	    'left':0
	}).hide().fadeTo('normal',config.backgroundOpacity);
	if(config.ajaxPage!=null && config.ajaxPage!='')
	{
	    $('<div id="'+config.boxId+'" class="dialogBox"></div>').load('ajax/'+config.ajaxPage,config.ajaxParams,function(){
		if(config.disabled_close===false){
		    if(config.idClose==null)config.idClose='close_'+config.boxId;
		    $(this).prepend('<div id="'+ config.idClose +'">'+config.close_txt+'</div>');
		}
		elm.replaceBox();
	    }).appendTo('body');
 
	}
	else
	{
	    $('<div id="'+config.boxId+'" class="dialogBox"></div>').appendTo('body').html(config.content).hide();
	    if(config.disabled_close===false){
		if(config.idClose==null)config.idClose='close_'+config.boxId;
		$('#'+config.boxId).prepend('<div id="'+ config.idClose +'">'+config.close_txt+'</div>');
	    }
	    elm.replaceBox();
	}
    }
 
    this.replaceBox=function(){
	config.widthBox=$('#'+config.boxId).width();
	config.heightBox=$('#'+config.boxId).height();
 
	config.left=((config.widthScreen-config.widthBox)/2)+config.widthScroll;
	config.top=((config.heightScreen-config.heightBox)/2)+config.heightScroll;
 
	$('#'+config.boxId).css({
	    'left':config.left,
	    'top':config.top
	}).fadeIn();
    }
tout fonctionne nickel la box se positionne comme il le faut , c'est nickel

en tout cas merci de votre aide
neoxen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 11h23   #11
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

En fait vous utilisez la même recette , vous créez un dialogue invisible et puis vous appelez la méthode replaceBox() pour ajuster sa position (CSS) et finalement le rendre visible.
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 14h03   #12
Invité de passage
 
Inscription : mai 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 17
Points : 2
Points : 2
Envoyer un message via MSN à neoxen Envoyer un message via Skype™ à neoxen
ha ok autant pour moi j'ai du mal lire le code

En tout cas merci pour l'aide :p
neoxen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h50.


 
 
 
 
Partenaires

Hébergement Web