Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources 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 18/01/2011, 17h30   #1
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 746
Points : 746
Par défaut Iframe : hauteur automatique

Bonjour.

Je n'arrive pas à redimensionner mon iframe en fonction de son contenu.
Pourtant ce n'est pas faute d'avoir chercher...

Actuellement j'ai trouvé une méthode qui fonctionne en Safari, en IE (la plupart du temps) mais jamais en FireFox.

Voici mon code :

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
 
if (typeof(JoomMyGolf.ResizeIFrame) == "undefined") {
 
	JoomMyGolf.ResizeIFrame = function(iFrame, iBody){
		var func = function() {
		    try{
		    	/*
		        if (iBody.offsetHeight) {
		        	iFrame.style.height = new jQuery(iBody).css('height');
		        } else {
		        	iFrame.style.height = (iBody.scrollHeight + 18) + "px";
		        }
		        */
		       	iFrame.style.height = (iBody.scrollHeight + 18) + "px";
		    }
		    catch(err){
		        alert('Err: ' + err.message);
		        window.status = err.message;
		    }
		}
 
		func();
	}
 
}
et l'appel à ce dernier :

Code :
1
2
<iframe name="com_mygolf_iframe" src="xxx" style="visibility: hidden; height: 1%; width: 100%; border-style: none; overflow: auto;" onload="JoomMyGolf.ReloadIFrame(this); JoomMyGolf.CheckMe();"></iframe>
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 21h59   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Bonjour,
tu nous parles de JoomMyGolf.ResizeIFrame, mais on le voit nulle part dans ton appel ou tu parles de JoomMyGolf.ReloadIFrame et de JoomMyGolf.CheckMe

donc je don't comprend
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 15h39   #3
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 746
Points : 746
Ce n'est pas grâve, j'ai résolu mon problème.
Les difficultés avec les iframe consistent à savoir comment accéder aux objets document et window.

Voici ma solution :

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
 
JoomMyGolf.prototype.GetIFrameDocument = function(){
		try {
			return this.iFrame.contentDocument || this.iFrame.contentWindow.document || this.iFrame.document;
		}
		catch(err) {
			JoomMyGolf.TreatError(err);
		}
 
		return null;
	}
 
	JoomMyGolf.prototype.GetIFrameWindow = function(){
		try {
			return this.iFrame.contentWindow || this.iFrame.contentDocument.defaultView;
		}
		catch(err) {
			JoomMyGolf.TreatError(err);
		}
 
		return null;
	}
 
	JoomMyGolf.prototype.ResizeIFrame = function(){
	    try{
	       	this.iFrame.style.height = (this.GetIFrameDocument().body.scrollHeight + 18) + "px";
	    }
	    catch(err){
	        JoomMyGolf.TreatError(err);
	    }
	}
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2011, 15h55   #4
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Je ne savais pas que cela était possible.

Merci pour la fonction Sergejack
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 11h29   #5
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 746
Points : 746
Ça ne fonctionne que pour des sites d'un même domaine.
Et il me semble que même avec cette restriction Chrome n'accepte pas l'interaction fenêtre <-> iframe.
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 10h33   #6
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 750
Points : 4 750
Citation:
Envoyé par Sergejack
Ça ne fonctionne que pour des sites d'un même domaine.
Et il me semble que même avec cette restriction Chrome n'accepte pas l'interaction fenêtre <-> iframe.
effectivement en tout cas en local, ce n'est pas possible avec Chrome, en ligne je ne s'aurais dire.
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2011, 10h01   #7
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 746
Points : 746
Et bien, il s'avère que cela fonctionne aussi avec Chrome.
Je suis rassuré que Chrome soit bien au diapason avec ses concurrents à ce niveau car il n'y a pas de raison de "sécuriser" différemment.

Au fait : travailler en local (je ne parle pas de localhost mais bien de c:/...) est travailler hors de tout domaine, donc il n'est pas surprenant que ça puisse ne pas marcher dans ce contexte là.
Sergejack 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 23h49.


 
 
 
 
Partenaires

Hébergement Web