Retroceder   Foros del Web > Programación para sitios web > AJAX

Respuesta
 
Herramientas Desplegado
Antiguo 18-mar-2008, 09:32   #1 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Idea Problemas al ejecutar JS desde AJAX

Cita:
Iniciado por ELEKTRON13 Ver Mensaje
Lo que no entiendo es que parte de mi html tengo que poner el

var scs=myAjax.responseText.extractScript(); //capturamos los scripts
myDivUoTroLugar.innerHTML=myAjax.responseText.stri pScript(); //eliminamos los scripts... ya son innecesarios
scs.evalScript();

Es lo que no entiendo perdon...

Va en Index.html ? o en la pagina que quiero que se cargue en el div del Index?
A mi me pasa mas o menos lo mismo, estoy empezando y no me aclaro aqui les dejo lo que tengo a ver como es la manera correcta de hacerlo ok?
Código HTML:
<!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"lang="es" xml:lang="es">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>Web de Santibanes de Murias</title>
	<link href="css/estilos.css" rel="stylesheet" type="text/css">
	<script language="JavaScript" type="text/javascript" src="js/codigo.js"></script>
	<script language="JavaScript" type="text/javascript" src="js/interpretadorAJAX.js"></script>
	</head>
<body onLoad="obtenerid('contenedor_menu')">

	
	<div id="Cabecera">
		<p><img src="Imagenes/mar_copia.jpg" /></p>
    </div>
	
	<div id="contenedor_menu">
	
			<div class="secundario" onClick="javascript:llamadasin('', 'contenido');">Inicio</div>
		
		<div class="principal" onClick="mostrar('uno')">Pueblo</div>
		    <div id="uno" style="display:none;">
			<div class="secundario" onClick="javascript:llamadasin('ejemplos/Fotos.html', 'contenido');">Fotos</div>
	            </div>	
	
	<div id="contenido" style="color:#FFFFFF">
	  	<h3 class="titulo" >Bienvenido a esta pagina</h3>
	  	<p>La pagina principal  </p>
	</div>
<script>
		var scs=myAjax.responseText.extractScript();    //capturamos los scripts
         myDivUoTroLugar.innerHTML=myAjax.responseText;      //eliminamos los scripts... ya son innecesarios
        scs.evalScript();       //ahora si, comenzamos a interpretar todo  
</script>
			
</body>
</html>
este es mi index.html

a continuacion les pongo Fotos.html que es donde tengo mi pagina que quiero que se carge en el index.html a traves de ajax.

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Fotos</title>
<script language="JavaScript" type="text/javascript" src="../js/galeria_fotos.js"></script>
<link href="css/galeria_foto.css" rel="stylesheet" type="text/css">
<script>
 	
var slider = function() {
	/* ==== private methods ==== */
	function getElementsByClass(object, tag, className) {
		var o = object.getElementsByTagName(tag);
		for ( var i = 0, n = o.length, ret = []; i < n; i++) {
			if (o[i].className == className) ret.push(o[i]);
		}
		if (ret.length == 1) ret = ret[0];
		return ret;
	}
	function setOpacity (obj,o) {
		if (obj.filters) obj.filters.alpha.opacity = Math.round(o);
		else obj.style.opacity = o / 100;
	}
	/* ==== Slider Constructor ==== */
	function Slider(oCont, speed, iW, iH, oP) {
		this.slides = [];
		this.over   = false;
		this.S      = this.S0 = speed;
		this.iW     = iW;
		this.iH     = iH;
		this.oP     = oP;
		this.oc     = document.getElementById(oCont);
		this.frm    = getElementsByClass(this.oc, 'div', 'slide');
		this.NF     = this.frm.length;
		this.resize();
		for (var i = 0; i < this.NF; i++) {
			this.slides[i] = new Slide(this, i);
		}
		this.oc.parent = this;
		this.view      = this.slides[0];
		this.Z         = this.mx;
		/* ==== on mouse out event ==== */
		this.oc.onmouseout = function () {
			this.parent.mouseout();
			return false;
		}
	}
	Slider.prototype = {
		/* ==== animation loop ==== */
		run : function () {
			this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5;
			this.view.calc();
			var i = this.NF;
			while (i--) this.slides[i].move();
		},
		/* ==== resize  ==== */
		resize : function () {
			this.wh = this.oc.clientWidth;
			this.ht = this.oc.clientHeight;
			this.wr = this.wh * this.iW;
			this.r  = this.ht / this.wr;
			this.mx = this.wh / this.NF;
			this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1);
		},
		/* ==== rest  ==== */
		mouseout : function () {
			this.over      = false;
			setOpacity(this.view.img, this.oP);
		}
	}
	/* ==== Slide Constructor ==== */
	Slide = function (parent, N) {
		this.parent = parent;
		this.N      = N;
		this.x0     = this.x1 = N * parent.mx;
		this.v      = 0;
		this.loaded = false;
		this.cpt    = 0;
		this.start  = new Date();
		this.obj    = parent.frm[N];
		this.txt    = getElementsByClass(this.obj, 'div', 'text');
		this.img    = getElementsByClass(this.obj, 'img', 'diapo');
		this.bkg    = document.createElement('div');
		this.bkg.className = 'backgroundText';
		this.obj.insertBefore(this.bkg, this.txt);
		if (N == 0) this.obj.style.borderLeft = 'none';
		this.obj.style.left = Math.floor(this.x0) + 'px';
		setOpacity(this.img, parent.oP);
		/* ==== mouse events ==== */
		this.obj.parent = this;
		this.obj.onmouseover = function() {
			this.parent.over();
			return false;
		}
	}
	Slide.prototype = {
		/* ==== target positions ==== */
		calc : function() {
			var that = this.parent;
			// left slides
			for (var i = 0; i <= this.N; i++) {
				that.slides[i].x1 = i * that.Z;
			}
			// right slides
			for (var i = this.N + 1; i < that.NF; i++) {
				that.slides[i].x1 = that.wh - (that.NF - i) * that.Z;
			}
		},
		/* ==== HTML animation : move slides ==== */
		move : function() {
			var that = this.parent;
			var s = (this.x1 - this.x0) / that.S;
			/* ==== lateral slide ==== */
			if (this.N && Math.abs(s) > .5) {
				this.obj.style.left = Math.floor(this.x0 += s) + 'px';
			}
			/* ==== vertical text ==== */
			var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0;
			if (Math.abs(v - this.v) > .5) {
				this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + 'px';
				this.v = v;
				this.cpt++;
			} else {
				if (!this.pro) {
					/* ==== adjust speed ==== */
					this.pro = true;
					var tps = new Date() - this.start;
					if(this.cpt > 1) {
						that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0);
					}
				}
			}
			if (!this.loaded) {
				if (this.img.complete) {
					this.img.style.visibility = 'visible';
					this.loaded = true;
				}
			}
		},
		/* ==== light ==== */
		over : function () {
			this.parent.resize();
			this.parent.over = true;
			setOpacity(this.parent.view.img, this.parent.oP);
			this.parent.view = this;
			this.start = new Date();
			this.cpt = 0;
			this.pro = false;
			this.calc();
			setOpacity(this.img, 100);
		}
	}
	/* ==== public method - script initialization ==== */
	return {
		init : function() {
			// create instances of sliders here
			// parameters : HTMLcontainer name, speed (2 fast - 20 slow), Horizontal ratio, vertical text ratio, opacity
			this.s1 = new Slider("slider", 12, 1.84/3, 1/3.2, 70);
			setInterval("slider.s1.run();", 16);
		}
	}
}();
// JavaScript Document
</script>
<style>
	html {
		overflow: hidden;
	}

	#center {
		position: absolute;
		left: 55%;
		top:  60%;
	}
	#slider {
		position: absolute;
		width: 820px;
		height: 333px;
		left: -430px;
		top: -186px;
		overflow: hidden;
		background: #000;
		border: 20px solid #000;
	}
	#slider .slide {
		position: absolute;
		top: 0px;
		height: 333px;
		width: 500px;
		background: #000;
		overflow: hidden;
		border-left: #000 solid 1px;
		cursor: default;
	}
	#slider .title   {
		color: #F80;
		font-weight: bold;
		font-size: 1.2em;
		margin-right: 1.5em;
		text-decoration: none;
	}
	#slider .backgroundText {
		position: absolute;
		width: 100%;
		height: 100%;
		top: 100%;
		background: #000;
		filter: alpha(opacity=40);
		opacity: 0.4;
	}
	#slider .text {
		position: absolute;
		top: 1%;
		top: 100%;
		color: #FFF;
		font-family: verdana, arial, Helvetica, sans-serif;
		font-size: 0.9em;
		text-align: justify;
		width: 470px;
		left: 10px;
	}
	#slider .diapo {
		position: absolute;
		filter: alpha(opacity=100);
		opacity: 1;
		visibility: hidden;
	}
</style>
</head>

<body>

<div id="center">
	<div id="slider">
		<div class="slide">
			<img src="../img/IMGP1321.JPG" alt="" width="494" height="339" class="diapo">
			<div class="text">
				  <span class="title">Nere</span>
				  Aqui sale Nere, metiendose entre sus dedos.
			</div>
	  </div>
		<div class="slide">
			<img class="diapo" src="images/sf04.jpg" alt="">
			<div class="text">
				<span class="title">By close-alikes</span>
				Now I have regained hopes in someday finding myself surrounded by
				close-alikes to us. However, they will not be audible, at least not in my
				life span. We resolved the low freq vibration a superior solution for our
				communicational goals ...
			</div>
		</div>
	</div>
</div>

<script type="text/javascript">
/* ==== start script ==== */
slider.init();
</script>
</body>
</html>
lo siento por la extension pero es que no veo la manera de arreglarlo y estoy muy interesado en saber como funcionaria.

Gracias de antemano, espero me sepais ayudar. Visto lo visto sois unos cracks del tema jejej xao
titogelo está desconectado   Responder Citando
Antiguo 24-mar-2008, 07:57   #2 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: HOWTO: Ejecutar javascript que viene de ajax

Cita:
Iniciado por titogelo Ver Mensaje
A mi me pasa mas o menos lo mismo, estoy empezando y no me aclaro aqui les dejo lo que tengo a ver como es la manera correcta de hacerlo ok?
Código HTML:
<!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"lang="es" xml:lang="es">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>Web de Santibanes de Murias</title>
	<link href="css/estilos.css" rel="stylesheet" type="text/css">
	<script language="JavaScript" type="text/javascript" src="js/codigo.js"></script>
	<script language="JavaScript" type="text/javascript" src="js/interpretadorAJAX.js"></script>
	</head>
<body onLoad="obtenerid('contenedor_menu')">

	
	<div id="Cabecera">
		<p><img src="Imagenes/mar_copia.jpg" /></p>
    </div>
	
	<div id="contenedor_menu">
	
			<div class="secundario" onClick="javascript:llamadasin('', 'contenido');">Inicio</div>
		
		<div class="principal" onClick="mostrar('uno')">Pueblo</div>
		    <div id="uno" style="display:none;">
			<div class="secundario" onClick="javascript:llamadasin('ejemplos/Fotos.html', 'contenido');">Fotos</div>
	            </div>	
	
	<div id="contenido" style="color:#FFFFFF">
	  	<h3 class="titulo" >Bienvenido a esta pagina</h3>
	  	<p>La pagina principal  </p>
	</div>
<script>
		var scs=myAjax.responseText.extractScript();    //capturamos los scripts
         myDivUoTroLugar.innerHTML=myAjax.responseText;      //eliminamos los scripts... ya son innecesarios
        scs.evalScript();       //ahora si, comenzamos a interpretar todo  
</script>
			
</body>
</html>
este es mi index.html

a continuacion les pongo Fotos.html que es donde tengo mi pagina que quiero que se carge en el index.html a traves de ajax.

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Fotos</title>
<script language="JavaScript" type="text/javascript" src="../js/galeria_fotos.js"></script>
<link href="css/galeria_foto.css" rel="stylesheet" type="text/css">
<script>
 	
var slider = function() {
	/* ==== private methods ==== */
	function getElementsByClass(object, tag, className) {
		var o = object.getElementsByTagName(tag);
		for ( var i = 0, n = o.length, ret = []; i < n; i++) {
			if (o[i].className == className) ret.push(o[i]);
		}
		if (ret.length == 1) ret = ret[0];
		return ret;
	}
	function setOpacity (obj,o) {
		if (obj.filters) obj.filters.alpha.opacity = Math.round(o);
		else obj.style.opacity = o / 100;
	}
	/* ==== Slider Constructor ==== */
	function Slider(oCont, speed, iW, iH, oP) {
		this.slides = [];
		this.over   = false;
		this.S      = this.S0 = speed;
		this.iW     = iW;
		this.iH     = iH;
		this.oP     = oP;
		this.oc     = document.getElementById(oCont);
		this.frm    = getElementsByClass(this.oc, 'div', 'slide');
		this.NF     = this.frm.length;
		this.resize();
		for (var i = 0; i < this.NF; i++) {
			this.slides[i] = new Slide(this, i);
		}
		this.oc.parent = this;
		this.view      = this.slides[0];
		this.Z         = this.mx;
		/* ==== on mouse out event ==== */
		this.oc.onmouseout = function () {
			this.parent.mouseout();
			return false;
		}
	}
	Slider.prototype = {
		/* ==== animation loop ==== */
		run : function () {
			this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5;
			this.view.calc();
			var i = this.NF;
			while (i--) this.slides[i].move();
		},
		/* ==== resize  ==== */
		resize : function () {
			this.wh = this.oc.clientWidth;
			this.ht = this.oc.clientHeight;
			this.wr = this.wh * this.iW;
			this.r  = this.ht / this.wr;
			this.mx = this.wh / this.NF;
			this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1);
		},
		/* ==== rest  ==== */
		mouseout : function () {
			this.over      = false;
			setOpacity(this.view.img, this.oP);
		}
	}
	/* ==== Slide Constructor ==== */
	Slide = function (parent, N) {
		this.parent = parent;
		this.N      = N;
		this.x0     = this.x1 = N * parent.mx;
		this.v      = 0;
		this.loaded = false;
		this.cpt    = 0;
		this.start  = new Date();
		this.obj    = parent.frm[N];
		this.txt    = getElementsByClass(this.obj, 'div', 'text');
		this.img    = getElementsByClass(this.obj, 'img', 'diapo');
		this.bkg    = document.createElement('div');
		this.bkg.className = 'backgroundText';
		this.obj.insertBefore(this.bkg, this.txt);
		if (N == 0) this.obj.style.borderLeft = 'none';
		this.obj.style.left = Math.floor(this.x0) + 'px';
		setOpacity(this.img, parent.oP);
		/* ==== mouse events ==== */
		this.obj.parent = this;
		this.obj.onmouseover = function() {
			this.parent.over();
			return false;
		}
	}
	Slide.prototype = {
		/* ==== target positions ==== */
		calc : function() {
			var that = this.parent;
			// left slides
			for (var i = 0; i <= this.N; i++) {
				that.slides[i].x1 = i * that.Z;
			}
			// right slides
			for (var i = this.N + 1; i < that.NF; i++) {
				that.slides[i].x1 = that.wh - (that.NF - i) * that.Z;
			}
		},
		/* ==== HTML animation : move slides ==== */
		move : function() {
			var that = this.parent;
			var s = (this.x1 - this.x0) / that.S;
			/* ==== lateral slide ==== */
			if (this.N && Math.abs(s) > .5) {
				this.obj.style.left = Math.floor(this.x0 += s) + 'px';
			}
			/* ==== vertical text ==== */
			var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0;
			if (Math.abs(v - this.v) > .5) {
				this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + 'px';
				this.v = v;
				this.cpt++;
			} else {
				if (!this.pro) {
					/* ==== adjust speed ==== */
					this.pro = true;
					var tps = new Date() - this.start;
					if(this.cpt > 1) {
						that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0);
					}
				}
			}
			if (!this.loaded) {
				if (this.img.complete) {
					this.img.style.visibility = 'visible';
					this.loaded = true;
				}
			}
		},
		/* ==== light ==== */
		over : function () {
			this.parent.resize();
			this.parent.over = true;
			setOpacity(this.parent.view.img, this.parent.oP);
			this.parent.view = this;
			this.start = new Date();
			this.cpt = 0;
			this.pro = false;
			this.calc();
			setOpacity(this.img, 100);
		}
	}
	/* ==== public method - script initialization ==== */
	return {
		init : function() {
			// create instances of sliders here
			// parameters : HTMLcontainer name, speed (2 fast - 20 slow), Horizontal ratio, vertical text ratio, opacity
			this.s1 = new Slider("slider", 12, 1.84/3, 1/3.2, 70);
			setInterval("slider.s1.run();", 16);
		}
	}
}();
// JavaScript Document
</script>
<style>
	html {
		overflow: hidden;
	}

	#center {
		position: absolute;
		left: 55%;
		top:  60%;
	}
	#slider {
		position: absolute;
		width: 820px;
		height: 333px;
		left: -430px;
		top: -186px;
		overflow: hidden;
		background: #000;
		border: 20px solid #000;
	}
	#slider .slide {
		position: absolute;
		top: 0px;
		height: 333px;
		width: 500px;
		background: #000;
		overflow: hidden;
		border-left: #000 solid 1px;
		cursor: default;
	}
	#slider .title   {
		color: #F80;
		font-weight: bold;
		font-size: 1.2em;
		margin-right: 1.5em;
		text-decoration: none;
	}
	#slider .backgroundText {
		position: absolute;
		width: 100%;
		height: 100%;
		top: 100%;
		background: #000;
		filter: alpha(opacity=40);
		opacity: 0.4;
	}
	#slider .text {
		position: absolute;
		top: 1%;
		top: 100%;
		color: #FFF;
		font-family: verdana, arial, Helvetica, sans-serif;
		font-size: 0.9em;
		text-align: justify;
		width: 470px;
		left: 10px;
	}
	#slider .diapo {
		position: absolute;
		filter: alpha(opacity=100);
		opacity: 1;
		visibility: hidden;
	}
</style>
</head>

<body>

<div id="center">
	<div id="slider">
		<div class="slide">
			<img src="../img/IMGP1321.JPG" alt="" width="494" height="339" class="diapo">
			<div class="text">
				  <span class="title">Nere</span>
				  Aqui sale Nere, metiendose entre sus dedos.
			</div>
	  </div>
		<div class="slide">
			<img class="diapo" src="images/sf04.jpg" alt="">
			<div class="text">
				<span class="title">By close-alikes</span>
				Now I have regained hopes in someday finding myself surrounded by
				close-alikes to us. However, they will not be audible, at least not in my
				life span. We resolved the low freq vibration a superior solution for our
				communicational goals ...
			</div>
		</div>
	</div>
</div>

<script type="text/javascript">
/* ==== start script ==== */
slider.init();
</script>
</body>
</html>
lo siento por la extension pero es que no veo la manera de arreglarlo y estoy muy interesado en saber como funcionaria.

Gracias de antemano, espero me sepais ayudar. Visto lo visto sois unos cracks del tema jejej xao
Alguien me puede ayudar con el tema. Veo que queda como un tema viejo y no avanza esto. Creo k alguien sabra como puedo resolver mi duda he visto que hay gente k ha consrguido hacer estas cosas.

Gracias y un saludo
titogelo está desconectado   Responder Citando
Antiguo 24-mar-2008, 08:27   #3 (permalink)
MaBoRaK llegará a ser famoso muy prontoMaBoRaK llegará a ser famoso muy pronto
 
Avatar de MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 1.782
Enviar un mensaje por MSN a MaBoRaK
Re: HOWTO: Ejecutar javascript que viene de ajax

loading...........

Hola, creo que confundes las cosas.... este script no es para HACER AJAX sino mas bien para INTERPRETAR EL JAVASCRIPT que viene de algun PROCESO AJAX (osea de otro X script ajax).

connection closed.
__________________
maborak@maborak.com
http://www.maborak.com
Maborak technologies
MaBoRaK está desconectado   Responder Citando
Antiguo 24-mar-2008, 08:37   #4 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: HOWTO: Ejecutar javascript que viene de ajax

Cita:
Iniciado por MaBoRaK Ver Mensaje
loading...........

Hola, creo que confundes las cosas.... este script no es para HACER AJAX sino mas bien para INTERPRETAR EL JAVASCRIPT que viene de algun PROCESO AJAX (osea de otro X script ajax).

connection closed.
Si si se que es para eso, pero no me funciona. Tengo por un lado una pagina con un menu ajax y quiero llamar a otra pagina que tiene tb ciertas funciones con javasvcript. El caso es que por separado las cosas funcionan tanto en una pagina como en otra. Pero cuando llamo desde el menu a la segunda pagina pues ahi, esta ultima, deja de funcionar. Y querisa saber como debo usar las cosas y donde debo ponerlas para que funcione correctamente.

Un saludo y disculpa mi ignorancia en el tema, si hay algo que no estoy haciendo bien, jejej solo pretendo aprender que me interesa mucho estos temas. Gracias de nuevo
titogelo está desconectado   Responder Citando
Antiguo 24-mar-2008, 08:40   #5 (permalink)
MaBoRaK llegará a ser famoso muy prontoMaBoRaK llegará a ser famoso muy pronto
 
Avatar de MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 1.782
Enviar un mensaje por MSN a MaBoRaK
Re: HOWTO: Ejecutar javascript que viene de ajax

loading.............


debes usarlo en tu funcion llamadasin, podrías ponerlo? para ver como está.


connection closed.
__________________
maborak@maborak.com
http://www.maborak.com
Maborak technologies
MaBoRaK está desconectado   Responder Citando
Antiguo 24-mar-2008, 14:25   #6 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: HOWTO: Ejecutar javascript que viene de ajax

Cita:
Iniciado por MaBoRaK Ver Mensaje
loading.............


debes usarlo en tu funcion llamadasin, podrías ponerlo? para ver como está.


connection closed.
bien este el codigo. codigo.js

Código HTML:
function llamadasin(url, contenedor){
var pagina_requerida = false
if (window.XMLHttpRequest) {
// comprueba si el navegador es opera, safari, mozilla, etc.
	pagina_requerida = new XMLHttpRequest()
}
else if (window.ActiveXObject){ 
// comprueba si el navegador es internet explorer
	try {
		pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP")
	} 
	catch (e){ 
// caso de versión antigua de internet explorer
		try{
			pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
		}
		catch (e){
		}
	}
}
else {
	return false
}

pagina_requerida.onreadystatechange=function(){ 
// llamada a la función que carga la página
		pintapagina(pagina_requerida, contenedor)
}
// métodos open y send
	pagina_requerida.open('GET', url, true) 
	pagina_requerida.send(null)
}

// función que presenta la información 
function pintapagina(pagina_requerida,contenedor){
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
		document.getElementById(contenedor).innerHTML=pagina_requerida.responseText
	}
	
/*De otro js*/
var result;
function obtenerid(dentrodeque){
	frase=document.getElementById(dentrodeque).innerHTML;
	result=new Array();
	result=frase.match(/\b\s+id=[^>\s]+\b/g);
	for(ii=0;ii<result.length;ii++){
		result[ii]=result[ii].split('"').join('');
		result[ii]=result[ii].split('id=').join('');
		result[ii]=result[ii].split(' ').join('');
	}
}
function mostrar(que){
	for(ii=0; ii<result.length ; ii++ ){
		if(que==result[ii]){
			if(document.getElementById(que).style.display=='none'){
				document.getElementById(que).style.display='block';
			}
			else{
				document.getElementById(que).style.display='none';
			}
		}
		else{
			eval("document.getElementById('"+result[ii]+"').style.display='none'");
		}
	}
}
function ir(url){
	window.location=url;
}

/*Otro js*/

	var time = 3000;
	var numofitems = 7;
	
	//menu constructor
	function menu(allitems,thisitem,startstate){ 
	  callname= "gl"+thisitem;
	  divname="subglobal"+thisitem;  
		this.numberofmenuitems = allitems;
		this.caller = document.getElementById(callname);
		this.thediv = document.getElementById(divname);
		this.thediv.style.visibility = startstate;
	}
					 
	//menu methods
	function ehandler(event,theobj){
	  for (var i=1; i<= theobj.numberofmenuitems; i++){
		  var shutdiv =eval( "menuitem"+i+".thediv");
		shutdiv.style.visibility="hidden";
		}
		theobj.thediv.style.visibility="visible";
	}
					
	function closesubnav(event){
	  if ((event.clientY <48)||(event.clientY > 107)){
		for (var i=1; i<= numofitems; i++){
		  var shutdiv =eval('menuitem'+i+'.thediv');
				shutdiv.style.visibility='hidden';
			}  
		}
	}
titogelo está desconectado   Responder Citando
Antiguo 24-mar-2008, 15:26   #7 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 14.188
Re: HOWTO: Ejecutar javascript que viene de ajax

Pues teniendo ya tu funcion pintapagina es cuestion de agregarle el codigo que propone Maborak en el primer post:
Código:
function pintapagina(pagina_requerida,contenedor){
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)) {
                var scs=pagina_requerida.responseText.extractScript();
                document.getElementById(contenedor).innerHTML=pagina_requerida.responseText.stripScript();
        scs.evalScript(); 
	}
}
Saludos.

PD Muevo tus respuestas a un tema nuevo.
__________________
Blog Web

Última edición por GatorV; 24-mar-2008 a las 16:05.
GatorV está desconectado   Responder Citando
Antiguo 24-mar-2008, 16:00   #8 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: HOWTO: Ejecutar javascript que viene de ajax

Gracias GatorV ahora si me funciona. Falta un corchete del if eh, por si alguien lo usa tb que se de cuenta de eso.

Gracias xao volvere con mas dudas seguramente jeje.
Tema cerrado por mi.
titogelo está desconectado   Responder Citando
Antiguo 25-mar-2008, 11:33   #9 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: HOWTO: Ejecutar javascript que viene de ajax

Hola de nuevo. Esta solucion es aplicable a mas problemas de este tipo??. Es que tengo otro caso que es lo mismo todo, pero claro las funciones no son las mismas. Y a la hora de insertar el codigo de eval, extracStrip etc... no se exactamente donde debe ir. Si es posible una explicacion un poco general para poder aplicarlo a otros problemas se lo agradeceria.

Gracias un saludo

Última edición por titogelo; 25-mar-2008 a las 11:43.
titogelo está desconectado   Responder Citando
Antiguo 25-mar-2008, 13:16   #10 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 14.188
Re: Problemas al ejecutar JS desde AJAX

Si ves la solución lo único que hay que hacer es:
1.- De tu Response Text extraes los scripts. (extractScripts())
2.- Pegas el HTML quitando los scripts (pues ya no son necesarios (stripScripts() ))
3.- Evaluas los scripts (evalScripts() )

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 26-mar-2008, 04:56   #11 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: Problemas al ejecutar JS desde AJAX

Cita:
Iniciado por GatorV Ver Mensaje
Si ves la solución lo único que hay que hacer es:
1.- De tu Response Text extraes los scripts. (extractScripts())
2.- Pegas el HTML quitando los scripts (pues ya no son necesarios (stripScripts() ))
3.- Evaluas los scripts (evalScripts() )

Saludos.
Ok, para este caso si lo entendi. Pero por ejemplo en otro caso que tengo no veo por ningun lado ResponseText ni nada similar.
Este es el codigo javascritp que tengo ahora. Aparte hay otro tres archivos mas .js que son protptype.lite.js, moo.fx.js, moo.fx.pack.js pero creo k hay no tengo que mirar nada. Si hace falta lo pego tb aki no pasa nada.

Código:
<script type="text/javascript">
function init(){
	var stretchers = document.getElementsByClassName('box');
	var toggles = document.getElementsByClassName('tab');
	var myAccordion = new fx.Accordion(
		toggles, stretchers, {opacity: false, height: true, duration: 600}
	);
	//hash functions
	var found = false;
	toggles.each(function(h3, i){
		var div = Element.find(h3, 'nextSibling');
			if (window.location.href.indexOf(h3.title) > 0) {
				myAccordion.showThisHideOpen(div);
				found = true;
			}
		});
		if (!found) myAccordion.showThisHideOpen(stretchers[0]);
}
</script>
Una solucion para este caso por ejemplo como seria. Nuevamente gracias por todo. Un saludo
titogelo está desconectado   Responder Citando
Antiguo 26-mar-2008, 09:37   #12 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 14.188
Re: Problemas al ejecutar JS desde AJAX

Ese código que pones no hace consultas AJAX solo es para hacer un slide o algo por el estilo, si necesitas ayuda en como configurar tenemos un foro de Frameworks en el foro de JavaScript.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 26-mar-2008, 09:56   #13 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: Problemas al ejecutar JS desde AJAX

Cita:
Iniciado por GatorV Ver Mensaje
Ese código que pones no hace consultas AJAX solo es para hacer un slide o algo por el estilo, si necesitas ayuda en como configurar tenemos un foro de Frameworks en el foro de JavaScript.

Saludos.
Ya este en si no hace ese tipos de consultas pero queiro realizar la misma operacion k con el problema anterior, desde un index llamar a esta otra pagina k tiene un slide. El slide si lo llamo desde el index no me funciona(vamos el mismo problema que tenia antes).

Gracias
titogelo está desconectado   Responder Citando
Antiguo 26-mar-2008, 10:26   #14 (permalink)
MaBoRaK llegará a ser famoso muy prontoMaBoRaK llegará a ser famoso muy pronto
 
Avatar de MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 1.782
Enviar un mensaje por MSN a MaBoRaK
Idea Re: Problemas al ejecutar JS desde AJAX

loading..................


Talvez sea porque cargas archivos js, para ese caso debes hacer esto

Código PHP:
function pintapagina(pagina_requerida,contenedor){
    if (
pagina_requerida.readyState == && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)) {
                var 
scs=pagina_requerida.responseText.extractScript();
                
document.getElementById(contenedor).innerHTML=pagina_requerida.responseText;
        
scs.evalScript(); 
    }

Puedes notar que he quitado el stripScripts()

Ya que el script ELIMINA TODOS LOS TAG SCRIPT pero no pensé en que también podría ponerse un tag script que tuviera archivos javascript..... bueno, es un bug mas.

La solucion:

ya no poner stripScripts().

O bien mejorar la funcion stripScripts() para que no elimine tags VACIOS ya que se trataría de un archivo javascript...

alguien lo hace?... :p

connection closed.
__________________
maborak@maborak.com
http://www.maborak.com
Maborak technologies
MaBoRaK está desconectado   Responder Citando
Antiguo 26-mar-2008, 11:00   #15 (permalink)
titogelo ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 17
Re: Problemas al ejecutar JS desde AJAX

Cita:
Iniciado por MaBoRaK Ver Mensaje
loading..................


Talvez sea porque cargas archivos js, para ese caso debes hacer esto

Código PHP:
function pintapagina(pagina_requerida,contenedor){
    if (
pagina_requerida.readyState == && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)) {
                var 
scs=pagina_requerida.responseText.extractScript();
                
document.getElementById(contenedor).innerHTML=pagina_requerida.responseText;
        
scs.evalScript(); 
    }

Puedes notar que he quitado el stripScripts()

Ya que el script ELIMINA TODOS LOS TAG SCRIPT pero no pensé en que también podría ponerse un tag script que tuviera archivos javascript..... bueno, es un bug mas.

La solucion:

ya no poner stripScripts().

O bien mejorar la funcion stripScripts() para que no elimine tags VACIOS ya que se trataría de un archivo javascript...

alguien lo hace?... :p

connection closed.
Uhhh ahora si que me perdi!!!. Creo que has mezclado cosas de la anterior duda ... sobre lo k estoy preugntando ahora no hay funcion pinta_pagina ni nada.

Xao
titogelo está desconectado   Responder Citando
Antiguo 26-mar-2008, 12:31   #16 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable