2009-08-05 22 views
34

La mia app ha una finestra di dialogo modale con un iframe al suo interno. Ho scritto il mio codice jQuery in modo tale che quando si apre la finestra di dialogo, imposta l'attributo 'src' dell'iframe appropriato in modo che il contenuto venga caricato. Tuttavia, durante il ritardo tra l'apertura della finestra di dialogo e il caricamento del contenuto, l'iframe appare in modo evidente come una casella bianca. Preferirei che l'iframe abbia uno sfondo trasparente.Sfondo trasparente Iframe

Ho provato a impostare allowtransparency = "yes" sull'iframe. Qualche idea? Grazie!

risposta

1

Perché non basta caricare la cornice fuori dallo schermo o nascosta e quindi visualizzarla una volta terminato il caricamento. È possibile mostrare un'icona di caricamento al suo posto per iniziare a fornire all'utente un feedback immediato che sta caricando.

+0

Perché non esiste un modo affidabile per sapere quando l'iframe ha terminato il caricamento. La navigazione Iframe viene eseguita impostando l'attributo 'href', non con il caricamento remoto. – brianjcohen

45

Ho usato questo la creazione di un IFrame tramite Javascript e ha funzionato per me:

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

Non sono sicuro se fa alcuna differenza, ma ho impostato queste proprietà prima di aggiungere l'IFrame al DOM. Dopo averlo aggiunto al DOM, ho impostato il suo src sull'URL reale.

+7

+1: non conoscevo la allowTransparency fino ad ora. Grazie :) –

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

che potrebbe funzionare (se si mette nel iframe) insieme

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

+1 per stile, perché non ho accesso agli attributi iframe. – Warlock

+1

Non funziona per me in Chrome o Firefox – geotheory

1

impostare il colore del src a nessuno sfondo e consentire 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> 

NOTA: codice il mio CSS un po 'diverso da quello che fanno tutti gli altri.