Foros del Web » Programando para Internet » Javascript »

Necesito un Evento para inicar...

Estas en el tema de Necesito un Evento para inicar... en el foro de Javascript en Foros del Web. hola... tengo lo siguiente... necesito que con un vento que nosea onLoad cargar una funcion javascript que se ejectue una vez cargada la pagina... Tengo ...
  #1 (permalink)  
Antiguo 14/10/2008, 09:00
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 3 meses
Puntos: 2
Exclamación Necesito un Evento para inicar...

hola... tengo lo siguiente...

necesito que con un vento que nosea onLoad cargar una funcion javascript que se ejectue una vez cargada la pagina...

Tengo que aplicarcelo a un div... lo mismoq ue hace onload en el body pero aplicarlo a un div...

Esto es posible...

//El motivo:
Tengo un menu... que llama a contenidos en forma asincronica con ajax. Entonces las paginas que llamo no tienen cabecera... son solo divs, y un codigo escrito en JS dentro de las paginas que llamo asincronicamente no funciona si no es llamado por un evento.. onClick, OnLoad etc... entonces necesito saber como puedo aplicarle a un div, alguna funcion que cuando se termine de cargar me ejecute ese codigo js....

Gracias....
  #2 (permalink)  
Antiguo 14/10/2008, 09:11
Avatar de 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: Necesito un Evento para inicar...

Estás encarando el problema de una manera incorrecta. Lo que tendrías que hacer es ver de qué manera interpretar código javascript en la respuesta ajax, entonces, si la misma tiene esto, por ejemplo:
Código PHP:
<div>loque sea<script>alert(123);</script></div> 
dispararía el alert al cargar. Pero como en el responseText ese código javascript no es interpretado a menos que lo trates, lo que deberías hacer es ver cómo tratarlo.
Una manera de tratarlo sería con un proptotipo como este:
Código:
 String.prototype.tratarResponseText=function(){
    var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
    var pat2=/\b\s+src=[^>\s]+\b/g;
    var elementos = this.match(pat) || [];
    for(i=0;i<elementos.length;i++) {
        var nuevoScript = document.createElement('script');
        nuevoScript.type = 'text/javascript';
        var tienesrc=elementos[i].match(pat2) || [];
        if(tienesrc.length){
            nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
        }else{
            var elemento = elementos[i].replace(pat,'$1','');
            nuevoScript.text = elemento;
        }
        document.getElementsByTagName('body')[0].appendChild(nuevoScript);
    }
    return this.replace(pat,'');
}
Y lo aplicarías de esta manera:
Código PHP:
 mydiv.innerHTML responseText.tratarResponseText(); 
Acá tenés más info acerca de esto:
http://www.disegnocentell.com.ar/new...los.php?id=176
  #3 (permalink)  
Antiguo 14/10/2008, 12:19
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Necesito un Evento para inicar...

Espero no haber entendido mail, pero este script que me pasaste carga los scripts js que se encuentra en la otra pagina en cabecera de la pagina y el contenido html normal en el div...

El problema es que elc ontenido js que tengo en la pagina destino se encuentra debajo de las etiquetas div... o sea al final del documento...

Por ello, lo que me propusiste no me sirve del oto, aunque lo tengo en cuenta, para otro tipo de cosas...

Gracias...
  #4 (permalink)  
Antiguo 14/10/2008, 13:19
Avatar de 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: Necesito un Evento para inicar...

Realmente no me queda claro esto que mencionás. Podrías poner un ejemplo simplificado de lo que necesitás (a qué función querés llamar cuando readyState sea igual a 4, y donde se encuentra esa función, el contenido a cargar, etc). Porque quizá sólo sea necesario aplicar un callBack al responseText, no sé. Lo que puedo decirte es que no existe un onload para un elemento div y sospecho que no lo necesitás tampoco, que para eso está onreadystatechange, no te parece?
  #5 (permalink)  
Antiguo 14/10/2008, 13:47
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Necesito un Evento para inicar...

Tienes toda la razon... por eso mismo, estoy complicado...

Te resumo el inconvenitente

vinculos.php
Código PHP:
<script type="text/javascript" src="js/drag-drop-custom.js"></script>
<div id="drgas" >
<div class="dragableBox" id="box1">

        CONTACTO 1        </div>
        <div class="dragableBox" id="box2">
        CONTACTO 2        </div>
  <div class="dragableBox" id="box3">
  CONTACTO 3        </div>
  <div class="dragableBox" id="box4">
  CONTACTO 4        </div>
  <div class="dragableBox" id="box5">
  CONTACTO 5        </div>
</div>
<script>

var dragDropObj = new DHTMLgoodies_dragDrop();
dragDropObj.addSource('box1',true);    
dragDropObj.addSource('box2',true);    
dragDropObj.addSource('box3',true);
dragDropObj.addSource('box4',true);
dragDropObj.addSource('box5',true);
dragDropObj.addTarget('dropBox','dropItems');
dragDropObj.init();
</script> 
Cuando llamo a este archivo.. mediante ajax por medio de :

menu.js....
Código PHP:
function xmlhttp(){
        var 
xmlhttp;
        try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
        catch(
e){
            try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
            catch(
e){
                try{
xmlhttp = new XMLHttpRequest();}
                catch(
e){
                    
xmlhttp false;
                }
            }
        }
        if (!
xmlhttp
                return 
null;
            else
                return 
xmlhttp;
    }
function 
abrirContenido(pagina,num){
        var 
document.getElementById('contenido');
        var 
ajax xmlhttp();

        
ajax.onreadystatechange=function(){

                if(
ajax.readyState==4){
                        
A.innerHTML ajax.responseText;

                    }
            }
        
ajax.open("GET",pagina+".php?num="+num,true);
        
ajax.send(null);
        

        return 
true;
    } 

index.php...

Código PHP:
<script type="text/javascript" src="js/menus.js"></script>
<li id="vinculoFamilia" onclick="abrirContenido('vinculos/vinculos','1');">Familiares</li> 

Cuando estoy en Index.php y presiono sobre Familires... llama al archivo vinculos.php...

Este deberia abrir el contenido. que de hecho lo abre correctamente el problema es que no funciona los js que estan dentro...

Probe con tu script que me pasaste... pero el problema es que no mantiene el orden en como estan ubicados los script js dentro de vinculos.php... no se si se entiende... ya que la ultima funciona debe estar debajo de los divs.

Bueno espero haber sido claro... gracias por responder....
  #6 (permalink)  
Antiguo 14/10/2008, 14:27
Avatar de 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: Necesito un Evento para inicar...

En realidad no creo que el orden afecte, pero si así fuera podrías solucionarlo usando lo que te pasé y un retardo:
Código PHP:
setTimeout(function(){
var 
dragDropObj = new DHTMLgoodies_dragDrop();
dragDropObj.addSource('box1',true);    
dragDropObj.addSource('box2',true);    
dragDropObj.addSource('box3',true);
dragDropObj.addSource('box4',true);
dragDropObj.addSource('box5',true);
dragDropObj.addTarget('dropBox','dropItems');
dragDropObj.init(); },500); 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:40.