2009-08-05 12 views
34

Mon application dispose d'un dialogue modal avec une iframe à l'intérieur. J'ai écrit mon code jQuery de sorte que lorsque la boîte de dialogue s'ouvre, il définit l'attribut 'src' approprié de l'iframe afin que le contenu se charge. Cependant, pendant le délai entre l'ouverture de la boîte de dialogue et le chargement du contenu, l'iframe apparaît visiblement sous la forme d'une boîte blanche. Je préférerais que l'iframe ait un fond transparent.Fond transparent Iframe

J'ai essayé de définir allowtransparency = "yes" sur l'iframe. Des idées? Merci!

Répondre

1

Pourquoi ne pas simplement charger le cadre hors de l'écran ou le cacher, puis l'afficher une fois le chargement terminé. Vous pouvez afficher une icône de chargement à sa place pour commencer à donner à l'utilisateur un retour immédiat qu'il charge.

+0

Parce qu'il n'y a aucun moyen fiable de savoir quand le iframe a fini de charger. La navigation Iframe est effectuée en définissant son attribut 'href', pas avec le chargement à distance. – brianjcohen

45

Je l'ai utilisé cette création d'un cadre iFrame Javascript et cela a fonctionné pour moi:

// IFrame points to the IFrame element, obviously 
IFrame.src = 'about: blank'; 
IFrame.style.backgroundColor = "transparent"; 
IFrame.frameBorder = "0"; 
IFrame.allowTransparency="true"; 

Je ne sais pas si cela fait une différence, mais je définir ces propriétés avant d'ajouter le IFrame au DOM. Après l'avoir ajouté au DOM, j'ai défini son src sur l'URL réelle.

+7

+1: Je ne savais pas à propos de allowTransparency jusqu'à maintenant. Merci :) –

29
<style type="text/css"> 
body {background:none transparent; 
} 
</style> 

qui pourrait fonctionner (si vous mettez dans le iframe) avec

<iframe src="stuff.htm" allowtransparency="true"> 
+2

+1 pour le style, car je n'ai pas accès aux attributs iframe. – Warlock

+1

Ne fonctionne pas pour moi dans Chrome ou Firefox – geotheory

1

définir la couleur d'arrière-plan du src sans pareil et permettre transparencey.

[WITHIN SCR PAGE STYLE] 
<style type="text/css"> 
    body 
    { 
     background:none transparent; 
    } 
</style> 

[IFRAME] 
<iframe src="#" allowtransparency="true">Error, iFrame failed to load.</iframe> 

REMARQUE: Je code mon CSS un peu différemment de la façon dont tout le monde le fait.