Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Ejecutar javascript que viene de Ajax Funciona en Mozilla No en Explorer

Estas en el tema de Ejecutar javascript que viene de Ajax Funciona en Mozilla No en Explorer en el foro de Frameworks JS en Foros del Web. Hola estoy intentando ejecutar el javascript que viene dentro de una peticion Ajax, estoy intentando aplicar lo que maborak posteo en http://www.forosdelweb.com/f77/howto...e-ajax-510438/...
  #1 (permalink)  
Antiguo 10/01/2009, 23:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años
Puntos: 0
Ejecutar javascript que viene de Ajax Funciona en Mozilla No en Explorer

Hola estoy intentando ejecutar el javascript que viene dentro de una peticion Ajax, estoy intentando aplicar lo que maborak posteo en http://www.forosdelweb.com/f77/howto...e-ajax-510438/

Última edición por sqa212; 12/01/2009 a las 18:04
  #2 (permalink)  
Antiguo 12/01/2009, 14:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años
Puntos: 0
Respuesta: Ejecutar javascript que viene de Ajax Funciona en Mozilla No en Explorer

He simplificado el script y el problema sigue sucediendo NO funciona en Explorer y SI Funciona en Mozilla y en Google Chrome:

-----------------------------
Base.asp
-----------------------------

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="expires" content="0">
<META HTTP-EQUIV="cache-control" content="no-cache">
<META HTTP-EQUIV="pragma" content="no-cache">
<script language="javascript" type="text/javascript">
function handleHttpResponse() {
if (http.readyState == 1) {
document.getElementById("Msg").innerHTML = 'Loading Data ...';
}

if (http.readyState == 4) {
if (http.status == 200) {
if (http.responseText.indexOf('invalid') == -1) {
var scs=http.responseText.extractScript();
document.getElementById('Msg').innerHTML =http.responseText.stripScript();
scs.evalScript();
//document.getElementById('Msg').innerHTML =http.responseText;
enProceso = false;
}
}
}
}

function PeticionUno() {
if (!enProceso && http) {
var url = "Primera.asp?sid="+Math.random();
http.open("GET", url, true);
http.onreadystatechange = handleHttpResponse;
enProceso = true;
http.send(null);
}
}

function PeticionDOS() {
if (!enProceso && http) {
var url = "Segunda.asp?sid="+Math.random();
http.open("GET", url, true);
http.onreadystatechange = handleHttpResponse;
enProceso = true;
http.send(null);
}
}

function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) { xmlhttp = false; }
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) { xmlhttp = false; }
}
return xmlhttp;
}
var enProceso = false; // lo usamos para ver si hay un proceso activo
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest
</script>
<SCRIPT language=Javascript src="interpretadorAjax.js"></SCRIPT>
</head>
<body>
<table id="tableformUndoArtFav" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<form id="formUndoFavArt" action="post">
<INPUT type="Button" value="Realizar Primera Peticion AJAX" onClick="PeticionUno();">
</form>
</td>
</tr>
</table>
<div id="Msg"></div>
</body>
</html>

-----------------------------
Primera.asp
-----------------------------

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Response.Write "Primera peticion ASP."
%>
<script>alert("Primera Peticion AJAX");</script>
<SCRIPT language=Javascript src="interpretadorAjax.js"></SCRIPT>
<%
'De esta forma se procesaria automaticamente
' <script>PeticionDOS();< script>
'<SCRIPT language=Javascript src="interpretadorAjax.js">< SCRIPT>
'de la forma de abajo requiere iteraccion por parte del usuario
%>
<a href="javascript: PeticionDOS()">Realizar Segunda Peticion AJAX</a>
<SCRIPT language=Javascript src="interpretadorAjax.js"></SCRIPT>

-----------------------------
Segunda.asp
-----------------------------

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Response.Write "Segunda peticion ASP.</FONT>"
%>
<script>alert("Segunda Peticion AJAX");</script>
<SCRIPT language=Javascript src="interpretadorAjax.js"></SCRIPT>

-----------------------------
interpretadorAjax.js
-----------------------------


var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
/**
* Eval script fragment
* @return String
*/
String.prototype.evalScript = function()
{
return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
};
/**
* strip script fragment
* @return String
*/
String.prototype.stripScript = function()
{
return this.replace(new RegExp(tagScript, 'img'), '');
};
/**
* extract script fragment
* @return String
*/
String.prototype.extractScript = function()
{
var matchAll = new RegExp(tagScript, 'img');
return (this.match(matchAll) || []);
};
/**
* Eval scripts
* @return String
*/
Array.prototype.evalScript = function(extracted)
{
var s=this.map(function(sr){
var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
if(window.execScript){
window.execScript(sc);
}
else
{
window.setTimeout(sc,0);
}
});
return true;
};
/**
* Map array elements
* @param {Function} fun
* @return Function
*/
Array.prototype.map = function(fun)
{
if(typeof fun!=="function"){return false;}
var i = 0, l = this.length;
for(i=0;i<l;i++)
{
fun(this[i]);
}
return true;
};
  #3 (permalink)  
Antiguo 15/01/2009, 18:41
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años
Puntos: 0
Respuesta: Ejecutar javascript que viene de Ajax Funciona en Mozilla No en Explorer

Lo solucione eliminando de las 2 paginas llamadas:

<SCRIPT language=Javascript src="interpretadorAjax.js"></SCRIPT>

  #4 (permalink)  
Antiguo 28/07/2009, 14:03
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ejecutar javascript que viene de Ajax Funciona en Mozilla No en Explorer

mira lo probe pero me da que no encuentra la direccion de los script que estan en la pagina que se carga
  #5 (permalink)  
Antiguo 03/12/2010, 01:27
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: Ejecutar javascript que viene de Ajax Funciona en Mozilla No en Explorer

decir que el código ajax.js que en hilo original publicó tonqac funciona perfectamente en todos los navegadores incluido Ieplorer, sólo que tiene un pequeño error, que se corrige sustituyendo la línea en rojo por la de azul.

Código:
var tagScript = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
/**
* Eval script fragment
* @return String
*/
String.prototype.evalScript = function()
{
        return (this.match(new RegExp(tagScript, 'img')) || []).evalScript();
};
/**
* strip script fragment
* @return String
*/
String.prototype.stripScript = function()
{
        return this.replace(new RegExp(tagScript, 'img'), '');
};
/**
* extract script fragment
* @return String
*/
String.prototype.extractScript = function()
{
        var matchAll = new RegExp(tagScript, 'img');
        return (this.match(matchAll) || []);
};
/**
* Eval scripts
* @return String
*/
Array.prototype.evalScript = function(extracted)
{
				var s=this.map(function(sr){
				var sc=(sr.match(new RegExp(tagScript, 'im')) || ['', ''])[1];
				if(window.execScript){
				    window.execScript(tagScript);
                                    window.execScript(sc);
				}
				else
				{
				 window.setTimeout(sc,0);
				}
				});
				return true;
};
/**
* Map array elements
* @param {Function} fun
* @return Function
*/
Array.prototype.map = function(fun)
{
        if(typeof fun!=="function"){return false;}
        var i = 0, l = this.length;
        for(i=0;i<l;i++)
        {
                fun(this[i]);
        }
        return true;
};  

function AJAX2(){
	var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
	var ajax = false;
	for(var i=0 ; !ajax && i<ajaxs.length ; i++){
		try{ 
			ajax = new ActiveXObject(ajaxs[i]); 
		}
		catch(e) { 
			ajax = false; 
		}
	}
	if(!ajax && typeof XMLHttpRequest!='undefined') {
		ajax = new XMLHttpRequest();
	}
	return ajax;
}

function getPagina(pagina,capa){
	
	document.getElementById(capa).innerHTML = "<center>C A R G A N D O</center>"; 
	
	var ajax = AJAX2(); 
	if(!ajax){
		document.getElementById(capa).innerHTML = "Error: El navegador no acepta ActiveX. No se pudo cargar la pagina.";
		return false;
	}

	ajax.open("POST",pagina,true);
	
	ajax.onreadystatechange = function() {
		if (ajax.readyState == 4) { 
			var scs=ajax.responseText.extractScript();
      document.getElementById(capa).innerHTML=ajax.responseText.stripScript();
      scs.evalScript();  
		}
	}
	
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send(null);
}

saludos
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 01:17.