Ver Mensaje Individual
  #18 (permalink)  
Antiguo 11/08/2007, 01:55
drada
 
Fecha de Ingreso: agosto-2007
Mensajes: 4
Antigüedad: 16 años, 8 meses
Puntos: 0
Sonrisa Re: HOWTO: Ejecutar javascript que viene de ajax

Llevo unas horas sin parar intentando borrar unas funciones cargadas por ajax y no se porque removeChild y replaceChild no me funcionan :S.

Buscando por internet me he topado con vuestro post y dado que parece que hay conocimientos :) me gustaría saber si sabéis como solucionarlo:

Quiero hacer una web en ajax y cada página que pasó a través de ajax carga una serie de funciones y elementos nuevos en javascript y css... pero el problema es que he visto que al menos en Internet Explorer 6, 7 y Firefox las funciones se van acumulando y no borra las anteriores (de otras páginas)...

He hecho muchas pruebas y muchos ejemplos, os puedo dejar este que se ve a simple vista:

Código PHP:
<html
<
head
<
script
java1="var segundos=1000;function Vamos() {var prueba=document.getElementById(\"prueba\");prueba.innerHTML = \"ok\";}timer = setTimeout(\"cuentaAtras()\", 1000);function cuentaAtras(){    var cuenta=document.getElementById(\"cuenta\");    cuenta.innerHTML=segundos;    segundos--;    timer = setTimeout(\"cuentaAtras()\", 1000);}";
java2="function Vamos() {var prueba=document.getElementById(\"prueba\");prueba.innerHTML = \"no\";}timer = setTimeout(\"cuentaAtras()\", 1000);";

var 
viejoscript;

function 
CargarJava() {
    var 
prueba=document.getElementById("prueba");
    
viejoscript document.createElement('script'); 
    
viejoscript.text java1
    
viejoscript.type 'text/javascript'
    
prueba.appendChild(viejoscript);
}
function 
CargarJava2() {
    var 
prueba=document.getElementById("prueba");
    var 
elemento prueba.getElementsByTagName('script');     
    
elemento=elemento[0];
    
    
nuevoScript document.createElement('script'); 
    
nuevoScript.text java2
    
nuevoScript.type 'text/javascript'
    
//prueba.appendChild(nuevoScript);
        
    
if(elemento.src!=null && elemento.src.length>0) {
        
nuevoScript.src elemento.src;
    } 
    
elemento.parentNode.replaceChild(nuevoScript,elemento);
}
</script> 
</head>  
<body> 
<a href="javascript:CargarJava();">Cargar Java 1</a>
<a href="javascript:CargarJava2();">Cargar Java 2</a>

<div id="prueba">Hola</div>
<a href="javascript:Vamos();">Ejecutar Script</a>

<a href="">¿BORRAR JAVA GRABADO EN PRUEBA?</a>

<div id="cuenta"></div>

</body> 
</html> 
Al dar a "Cargar Java 1" veremos un contador que empieza desde 1000 y al dar a "Cargar Java 2" quiero que se borre el script anterior, se puede ver que no se borra ya que el secundero baja de 2 en dos al añadir "setTimeout" y la función "cuentaAtras" no debería de existir en Java2.

En el ejemplo está todo de forma basta y con 2 funciones separadas, necesitaría saber como borrar completamente las funciones javascript cargadas o reemplazarlas correctamente

No se si podréis ayudarme y si va en este post... pero creo que lo que habéis explicado habla justo de lo que estoy preguntando.

Muchas gracias!