Foros del Web » Programando para Internet » Javascript »

Internet Explorer no reconoce las funciones de un archivo JS

Estas en el tema de Internet Explorer no reconoce las funciones de un archivo JS en el foro de Javascript en Foros del Web. Holas, Tengo un sistema que he trabajado con api's de Ajax para las ventanas y las cargas de datos, creo que está demás decir que ...
  #1 (permalink)  
Antiguo 19/08/2008, 08:11
 
Fecha de Ingreso: agosto-2004
Mensajes: 131
Antigüedad: 19 años, 9 meses
Puntos: 2
Pregunta Internet Explorer no reconoce las funciones de un archivo JS

Holas,

Tengo un sistema que he trabajado con api's de Ajax para las ventanas y las cargas de datos, creo que está demás decir que con Mozilla funciona perfectamente, el problema lo tengo con Internet Explorer...

En un archivo js tengo varias funciones personalizadas, pero IE no reconoce ninguna de ellas, sin embargo, si copio una de esas funciones a la misma página que se está ejecutando entonces la reconoce perfectamente, según un amigo me dice que IE a veces se confunde por la estructura jerárquica que le da a las funciones, pero la verdad no entiendo bien a qué se refiere, he buscado información pero no he encontrado nada realmente clarificador.

Si alguien pudiera ayudarme explicándome como es eso de las estructuras de funciones que usa IE me seria de gran ayuda, o si tienen alguna otra idea de lo que pueda estar pasando también les estaré muy agradecido.

Acá les dejo el código del encabezamiento de la página, está trabajada en ASP clásico, el archivo que uso se llama funciones.js :P

Una aclaración: la variable ASP xDirInicioControl es una variable de entorno que defino y que indica la url absoluta en donde se encuentra alojado el sitio, se usa por temas de navegación, para que no tenga problemas para encontrar los archivos. La variable funciona bien, esto quiere decir que si tomo la ruta al archivo js y la copio en la barra de direcciones, IE efectivamente encuentra el archivo, por lo que con seguridad la ruta es correcta.

Código:
<!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">
<head>
<title><%=xTituloSitio%></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="<%=xDirInicioControl%>/css/<%=archivo_css%>" rel="stylesheet" type="text/css">
<script type="text/javascript" src="<%=xDirInicioControl%>/javascripts/funciones.js"></script>
<script type="text/javascript" src="<%=xDirInicioControl%>/javascripts/prototype.js"> </script>
<script type="text/javascript" src="<%=xDirInicioControl%>/javascripts/effects.js"> </script>
<script type="text/javascript" src="<%=xDirInicioControl%>/javascripts/window.js"> </script>
<script type="text/javascript" src="<%=xDirInicioControl%>/javascripts/debug.js"> </script>
<script language="javascript" type="text/javascript">
	//Si pongo esta función en el archivo funciones.js, entonces IE no la reconoce 
        function obtieneHTML( url, destino, idFrm ) {
		var parametros = Form.serialize($(idFrm));
		new Ajax.Updater( destino, url, { method: 'post', parameters: parametros });
	}

        //Si pongo esta variable dentro del archivo js tampoco la reconoce
	var globalCallbacks = {
		onCreate: function(){$('status').style.display = 'block';},
		onComplete : function(){
			if (Ajax.activeRequestCount == 0){
				$('status').style.display = 'none';
			}
		}
	};
	Ajax.Responders.register(globalCallbacks);
</script>
<link href="themes/default.css" rel="stylesheet" type="text/css"/>
<link href="themes/alert.css" rel="stylesheet" type="text/css"/>
<link href="themes/alphacube.css" rel="stylesheet" type="text/css"/>
</head>
<body bgcolor="#ffffff" onLoad="<%=onLoad%>">
  #2 (permalink)  
Antiguo 19/08/2008, 08:18
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Internet Explorer no reconoce las funciones de un archivo JS

Habría que ver qué más contiene tu archivo *.js.

¿Has intentado poniendo la ruta absoluta en vez de usar la variable en ASP que mecionas?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 19/08/2008, 08:36
 
Fecha de Ingreso: agosto-2004
Mensajes: 131
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: Internet Explorer no reconoce las funciones de un archivo JS

Cita:
Iniciado por David el Grande Ver Mensaje
Habría que ver qué más contiene tu archivo *.js.

¿Has intentado poniendo la ruta absoluta en vez de usar la variable en ASP que mecionas?
Hola David,

El archivo contiene variables y funciones, además de muchos comentarios :D. En un principio pensé que IE se podia haber mareado con la declaración de variables al comienzo del archivo, pero al sacarle las variables y limpiar caché y todo eso...no paso nada

En cuanto a la ruta, la verdad no deberia cambiar nada por que lo único que hago es escribir el contenido de la variable en el HTML, por lo que la ruta queda absoluta de todas formas.

Bueno, te dejo parte del archivo js, es muy largo para ponerlo completo, aunque si se requiere lo puedo poner por partes. No todas las funciones las uso, algunas hay que borrarlas pero de momento no haré limpieza hasta que el sistema este 100%

Saludos y muchas gracias,

Rodrigo

Código:
// JavaScript Document

var directorioInicio = '/midirectorio/control';

var vWidth = 650;
var vHeight = 550;
var vTop = 30;
var vLeft = 150;

var html = new Array();
html[0] = ['á', '&aacute;'];
html[1] = ['é', '&eacute;'];
html[2] = ['í', '&iacute;'];
html[3] = ['ó', '&oacute;'];
html[4] = ['ú', '&uacute;'];
html[5] = ['Á', '&Aacute;'];
html[6] = ['É', '&Eacute;'];
html[7] = ['Í', '&Iacute;'];
html[8] = ['Ó', '&Oacute;'];
html[9] = ['Ú', '&Uacute;'];
html[10] = ['Ä', 'Ä'];
html[11] = ['Ë', 'Ë'];
html[12] = ['Ï', 'Ï'];
html[13] = ['Ö', 'Ö'];
html[14] = ['Ü', 'Ü'];
html[15] = ['ä', 'ä'];
html[16] = ['ë', 'ë'];
html[17] = ['ï', 'ï'];
html[18] = ['ö', 'ö'];
html[19] = ['ü', 'ü'];
html[20] = ['ñ', '&ntilde;'];
html[21] = ['Ñ', '&Ntilde;'];
html[22] = ['"', '"'];
html[23] = ['‘', '‘'];
html[24] = ["'", '''];
html[25] = ['–', '-'];
html[26] = ['%', '%'];
html[27] = ['>', '>'];
html[28] = ['<', '<'];

var excluyeExpReg = new Array();
excluyeExpReg[0] = 0;
excluyeExpReg[1] = 8;
excluyeExpReg[2] = 9;
excluyeExpReg[3] = 32;

//FUNCIONES DREAMWEAVER
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features, myWidth, myHeight, isCenter) { //v3.0
  if(window.screen)if(isCenter)if(isCenter=="true"){
	var myLeft = (screen.width-myWidth)/2;
	var myTop = (screen.height-myHeight)/2;
	features+=(features!='')?',':'';
	features+=',left='+myLeft+',top='+myTop;
  }
  window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
}

//**************************************************************************
//*** FUNCIONES PERSONALIZADAS
//**************************************************************************

function trim(cadena) {
	for(i=0; i<cadena.length; )	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}

	for(i=cadena.length-1; i>=0; i=cadena.length-1) {
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
	return cadena;
}

function irPagina(frmId, pagina) {
	frm = document.getElementById(frmId);
	frm.accion.value = '';
	frm.target = '_top';
	direccion = document.location.href.split('?');
	frm.action = direccion[0];
	frm.pagina_actual.value = pagina;
	frm.submit();
}

function filtrar(formId, url, divId) {
	document.getElementById(formId).pagina_actual.value = 1;
	obtieneHTML__( url, divId, formId );
}

//--------------------------------------------------------------------------------
// FUNCIONES AJAX
//--------------------------------------------------------------------------------
function registerCallBacks() {
	Ajax.Responders.register(globalCallbacks);
}
function clearCallBacks() {
	var globalCallbacks = {
		onCreate: function(){$('status').style.display = 'none';},
		onComplete : function(){
			if (Ajax.activeRequestCount == 0){
				$('status').style.display = 'none';
			}
		}
	};
	Ajax.Responders.register(globalCallbacks);
}
function enviaForm(accion, idFrm, url, destino){
	clearCallBacks();
	var frm = document.getElementById(idFrm);
	if ( !validaForm(frm) ) {
		return false;
	}
	formateaCampos(frm, 1);
	frm.accion_int.value = accion;
	var params = Form.serialize($(idFrm));
	new Ajax.Updater(destino, url, { method:'post',
		parameters: params,
		onComplete: function(){
			if ( document.location.href.indexOf('?')!=-1 ) {
				aux = document.location.href.split('?');
				direccion = aux[0];
			} else {
				direccion = document.location.href;
			}
			formateaCampos(frm, 2);
			alert('Registro grabado exitosamente.');
			parent.document.location = direccion + '?destacado=' + frm.id_registro.value + '&pagina_actual=' + frm.pagina_actual.value;
		}
	});
}
function validaForm() {
	alert('Por favor realice la validación del formulario antes de enviarlo.');
	return false;
}
function formateaCampos(frm, paso) {
	var tipoCampo;
	for ( x=0; x<frm.elements.length; x++ ) {
		tipoCampo = frm.elements[x].type;
		if ( (tipoCampo=='text') || (tipoCampo=='textarea') || (tipoCampo=='hidden') ) {
			if ( (frm.elements[x].value.length>0) && (!frm.elements[x].readOnly) ) {
				frm.elements[x].value = formatHTML(frm.elements[x].value, paso)
			}
		}
	}
}

function formatHTML(str, paso) {
	found = false;
	if ( paso==1 ) {
		original = 0;
		reemplazo = 1;
	} else {
		original = 1;
		reemplazo = 0;
	}
	for ( h=0;h<html.length;h++ ) {
		if ( str.indexOf(html[h][original])!=-1 ) {
			str = str.split(html[h][original]).join(html[h][reemplazo]);
		}
	}
	//alert(str);
	return str;
}

function cuentaChars(campo, e) {
	var tecla = (document.all)?e.keyCode:e.which;
	var te = String.fromCharCode(tecla);
	var excluido = false;
	for ( ex=0; ex<excluyeExpReg.length;ex++ ) {	//Revisa si la tecla presionada está excluida de revisión
		if ( tecla==excluyeExpReg[ex] ) {
			return true;
			excluido = true;
			break;
		}
	}
	if ( !excluido ) {
		var original = 0;
		var reemplazo = 1;
		var str = trim(campo.value);
		//alert('original = ' + str.length);
		str = formatHTML(str, 1);					//cambio todos los caracteres actuales por catacteres html
		var largoStr = str.length;					//ahora reviso si el largo de la cadena es mayor que el maximo permitido
		//alert('version html =' + str.length);
		if ( largoStr>=campo.maxLength ) {
			alert('Se ha alcanzado el máximo de caracteres permitido para el campo.');
			return false;
		} else {
			for ( h=0;h<html.length;h++ ) {
				if ( te == html[h][original] ) {
					largoStr += ( html[h][reemplazo].length>0 )?html[h][reemplazo].length-1:0;
					//alert('agregada la tecla = ' + largoStr);
				}
			}
			if ( largoStr>=campo.maxLength ) {
				alert('Se ha alcanzado el máximo de caracteres permitido para el campo.');
				return false;
			} else {
				return true;
			}
		}
	}
}
  #4 (permalink)  
Antiguo 19/08/2008, 08:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Internet Explorer no reconoce las funciones de un archivo JS

¿Has probado con limpiar el archivo?. Digo, poner una única función con un alert o algo así y tratas de llamar a esa función, si ejecuta el alert significa que el problema está en el código de las funciones, si no ejecuta significa que el problema está en la ruta o en que por alguna razón no está accediendo al archivo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 19/08/2008, 08:51
 
Fecha de Ingreso: agosto-2004
Mensajes: 131
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: Internet Explorer no reconoce las funciones de un archivo JS

Cita:
Iniciado por David el Grande Ver Mensaje
¿Has probado con limpiar el archivo?. Digo, poner una única función con un alert o algo así y tratas de llamar a esa función, si ejecuta el alert significa que el problema está en el código de las funciones, si no ejecuta significa que el problema está en la ruta o en que por alguna razón no está accediendo al archivo.
Hola, sí, también intenté limpiando el archivo y colocando un alert dentro de una función pero tampoco resultó, igual me decia "Se esperaba un objeto"...

El problema es bastante raro, por que la ruta está correcta (encuentra el archivo), pero no accede a las funciones definidas dentro de él...

Creo que el cuento pasa por eso de la jerarquización de funciones de IE, en realidad no se me ocurre qué más pueda estar pasando...

Gracias
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 22:57.