Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/01/2009, 14:12
sqa212
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años, 7 meses
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;
};