Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/12/2008, 07:56
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Bloquear iframe mientras se carga contenido

Lo del texto sobre la capa no es un problema, se soluciona fácil:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
title>test</title>
<
style>
*{
padding:0margin:0}
html,body{height:100&#37;; width:100%}
#loading{ width:100%; height:100%; background-color:#000; opacity:.7; filter:alpha(opacity=70);zoom:1; position:absolute; z-index:100; display:none}
#loading p{ width:100%;text-align:center; color:#FFF; font-size:15px; font-family:Verdana, Arial, Helvetica, sans-serif; position:absolute; top:50%; font-weight:bold}
</style>
<
script>
function $(
id){
    return 
document.getElementById(id);    
}

var 
asignar=setInterval(function(){
    try{
        var 
padreDoc=$('padre').contentDocument || $('padre').contentWindow.document;
        var 
hijo=padreDoc.getElementById('hijo');
    }catch(
e){
    }
    if(
hijo && typeof hijo!='undefined'){
        if(
window.ActiveXObject){//explorer
            
$('loading').style.display='none';
            
hijo.onreadystatechange=function(){
                $(
'loading').style.display='block';
                if(
hijo.readyState=='complete'){
                       $(
'loading').style.display='none';
                }
            }
            
clearInterval(asignar);
            return;
        }
        try{
//safari
            
if (navigator.userAgent.indexOf('Safari') != -1){
                var 
docNieto=hijo.contentDocument || hijo.contentWindow.document;
                var 
sc=docNieto.createElement('script');
                
sc.text='self.onunload=function(){top.$("loading").style.display="block";}';    
                
docNieto.body.appendChild(sc);            
                $(
'loading').style.display='none';
            }
        }catch(
e){}
        
hijo.onload=function(){
            var 
docNieto=hijo.contentDocument || hijo.contentWindow.document;
            var 
sc=docNieto.createElement('script');
            
sc.text='self.onunload=function(){top.$("loading").style.display="block";}';    
            
docNieto.body.appendChild(sc);            
            $(
'loading').style.display='none';
        }
        
        
clearInterval(asignar);    

    }
},
10);
</script>
</head>
<body>
<div id="loading"><p>cargando...</p></div>
<iframe id="padre" src="hijo.html?hdh" width="500" height="500"></iframe>
</body>
</html> 
Agregué una pequeña mejora para que funcione bien en Safari sin afectar al resto. Creo que es la solución que menos trabajo posterior implica, pero sobre gustos...

Última edición por Panino5001; 21/12/2008 a las 10:05