Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] >> ¿Porqué no funciona en Mozilla? <<

Estas en el tema de >> ¿Porqué no funciona en Mozilla? << en el foro de Javascript en Foros del Web. Amig@s, hoy estoy preguntón. ¿Por qué no funciona este JavaScript (calendario) en Mozilla ? Código: <script language="JavaScript"> <!-- Begin var now = new Date(); var ...
  #1 (permalink)  
Antiguo 11/09/2004, 05:42
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Pregunta >> ¿Porqué no funciona en Mozilla? <<

Amig@s, hoy estoy preguntón.

¿Por qué no funciona este JavaScript (calendario) en Mozilla ?
Código:
<script language="JavaScript">
<!-- Begin
var now = new Date();
var month_array = new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
document.write("<form name=date_list><table bgcolor='#DDDDDD'><tr><td>");
document.write("<select name=month onchange=change_month(this.options.selectedIndex)>");
for(i=0;i<month_array.length;i++)
{
 if (now.getMonth() != i)
 {document.write ("<option value="+i+">"+month_array[i]);}
 else
 {document.write ("<option value="+i+" selected>"+month_array[i]);}

}
document.write("</select>");
document.write("</td><td>");
document.write ("<select name=year onchange=change_year(this.options[this.options.selectedIndex])>");
for(i=1950;i<3000;i++)
{
 if (now.getYear() != i)
 {document.write("<option value="+i+">"+i);}
 else
 {document.write("<option value="+i+" selected>"+i);}
}
document.write("</select></td></tr><tr><td colspan=2><center>");

document.write("<table bgcolor='#FFFFFF' border=0 cellspacing=0 cellpading=0 width=100%><tr bgcolor='#DDDDDD' align=center>");
document.write("<td><font color='#000000'>L</font></td><td><font color='#000000'>M</td><td><font color='#000000'>X</td><td><font color='#000000'>J</td><td><font color='#000000'>V</td><td ><font color='#000000'>S</td><td ><font color=RED>D</td>");
document.write("</tr><tr>");
for(j=0;j<6;j++)
{
 for(i=0;i<7;i++)
 {
   document.write("<td align=center id=d"+i+"r"+j+"></td>")
 }
 document.write("</tr>");
}

document.write("</table>");

document.write("</center></from></td></tr></table>");

var show_date = new Date();

function set_cal(show_date)
{
begin_day = new Date (show_date.getYear(),show_date.getMonth(),1);
begin_day_date = begin_day.getDay();
end_day = new Date (show_date.getYear(),show_date.getMonth()+1,1);
count_day = (end_day - begin_day)/1000/60/60/24;
input_table(begin_day_date,count_day);
}
set_cal(show_date);

function input_table(begin,count)
{
init();
j=0;
if (begin!=0){i=begin-1;}else{i=6}
for (c=1;c<count+1;c++)
{
 colum_name = eval("d"+i+"r"+j);
 if ((now.getDate() == c)&&(show_date.getMonth() == now.getMonth())&&(show_date.getYear() == now.getYear())) {colum_name.style.backgroundColor = "#00008B";colum_name.style.color = "#FFFFFF"};
 colum_name.innerText =  c;
 i++;
 if (i==7){i=0;j++;}
}
}

function init()
{
for(j=0;j<6;j++)
{
 for(i=0;i<7;i++)
 {
 colum_name = eval("d"+i+"r"+j);
 colum_name.innerText =  "-";
 colum_name.style.backgroundColor ="";
 colum_name.style.color ="#00008B";
 }
}
}

function change_month(sel_month)
{
show_date = new Date(show_date.getYear(),sel_month,1);
set_cal(show_date);
}

function change_year(sel_year)
{
sel_year = sel_year.value;
show_date = new Date(sel_year,show_date.getMonth(),1);
set_cal(show_date);
}
//  End -->
</script> 
Lo tengo puesto como xxx.js:
Código:
<script language="JavaScript" src="calendario.js" type=text/javascript></script> 
En I.Explorer funciona perfectamente, pero en Mozilla sólo sale una parte.
Así:

como veis falta la parte de los días.

Gracias por vuestra ayuda.

Saludos
__________________
· No contesto por M.P.
  #2 (permalink)  
Antiguo 11/09/2004, 05:51
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola Seoista

Me parece que innerText es sólo para Explorer
  #3 (permalink)  
Antiguo 11/09/2004, 06:06
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Cita:
Iniciado por tunait
Me parece que innerText es sólo para Explorer
Gracias tunait.

¿Y cómo sería para Mozilla?. Sé poco (¡¡¡muy poco!!!) de javascript y demás cosas (soy autodidacta, o sea que aprendo de lo que me enseñais los que sabeis ).

Saludos
__________________
· No contesto por M.P.
  #4 (permalink)  
Antiguo 11/09/2004, 06:14
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hum ... prueba usando el DOM, cambia innerText por nodeValue

qué uso vas a darle al calendario?

Es que este verano me entretuve en hacer uno, igual y te sirve, funciona bien en mozilla también
  #5 (permalink)  
Antiguo 11/09/2004, 06:21
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Cita:
Iniciado por tunait
qué uso vas a darle al calendario?
Uso específico..., ninguno, sólo tener un calendario en mi página que se vea el mes completo (o sea, un adorno, una pijadita, etc...)
Cita:
Iniciado por tunait
Es que este verano me entretuve en hacer uno, igual y te sirve, funciona bien en mozilla también
Gracias tunait, pero no desearía molestarte mucho .
__________________
· No contesto por M.P.
  #6 (permalink)  
Antiguo 11/09/2004, 06:22
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Con lo que sea, contestaré mañana, ahora me está llamando la parienta para almorzar, si no me .

Besos
__________________
· No contesto por M.P.

Última edición por seoista; 11/09/2004 a las 06:29
  #7 (permalink)  
Antiguo 11/09/2004, 06:36
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
ok

Mira, lo he dejado en mi server pa que lo pruebes http://javascript.tunait.com/javascr...calendario.htm

Buen provecho

saludos
  #8 (permalink)  
Antiguo 11/09/2004, 08:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola a todos:

Es cierto que innerText solo funciona en explorer, pero innerHTML funciona tanto en explorer como en mozilla y opera...

Me temo que el uso de los nodos es algo complejo pero es lo más compatible, aunque sin estar definido innerHTML en w3.org, lo aceptan los navegadores más usados.

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 11/09/2004, 23:51
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Gracias tunait y caricatos por la ayuda que me dais.


Cita:
Iniciado por tunait
Hum ... prueba usando el DOM, cambia innerText por nodeValue
He cambiado "innerText" por "nodeValue" y sigue sin funcionarme en Mozilla, sólo la parte de arriba pero sin los días, como comenté en el post de más arriba.


Cita:
Iniciado por tunait
Mira, lo he dejado en mi server pa que lo pruebes http://javascript.tunait.com/javasc.../calendario.htm
Me gusta, pero también me gustaría que señalara el día que estamos, que es como funciona en I.Explorer.

ASI:



Cita:
Iniciado por caricatos
Es cierto que innerText solo funciona en explorer, pero innerHTML funciona tanto en explorer como en mozilla y opera...
He cambiado "innerText" por "innerHTML" y tampoco me funciona en Mozilla, sólo la parte de arriba pero sin los días cómo le comentaba a tunait.

Sé que os estoy dando la lata por una chorrada mía y os doy las gracias a ambos.
__________________
· No contesto por M.P.
  #10 (permalink)  
Antiguo 12/09/2004, 00:24
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Cita:
Iniciado por seoista
Me gusta, pero también me gustaría que señalara el día que estamos, que es como funciona en I.Explorer.
ASI:
Perdona tunait, no me había dado cuenta, pero sí señala el día que estamos el script que me has dejado:
Cita:
Iniciado por tunait
Mira, lo he dejado en mi server pa que lo pruebes http://javascript.tunait.com/javasc.../calendario.htm
Me acabo de levantar , claro.

Muchas gracias .
__________________
· No contesto por M.P.
  #11 (permalink)  
Antiguo 06/09/2005, 07:45
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Cita:
Iniciado por caricatos
Hola a todos:

Es cierto que innerText solo funciona en explorer, pero innerHTML funciona tanto en explorer como en mozilla y opera... :pensando:

Me temo que el uso de los nodos es algo complejo pero es lo más compatible, aunque sin estar definido innerHTML en w3.org, lo aceptan los navegadores más usados.

saludos :arriba:
innerText y innerHTML, si puede llegar a funcionar en Mozilla, siempre y cuando no se use el estandar DTD XHTML 1.0 Strict. Mozilla no reconocerá en ningún caso la función innerHTML siguiendo las normas estricatamente de W3C.
El explorer lo traga todo, porque sigue fuera de los estandares W3C, pero Mozilla hace caso de las cabezeras del documento a rajatabla.

Hay que buscar otra solución en este caso.

Saludos
  #12 (permalink)  
Antiguo 06/09/2005, 07:46
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Algo tarde esta respuesta. Esto me pasa por no mirar la fecha del post y usar el buscador.
  #13 (permalink)  
Antiguo 06/09/2005, 08:12
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
Iniciado por ghismo
Algo tarde esta respuesta. Esto me pasa por no mirar la fecha del post y usar el buscador.
Hola ghismo,

sí que tiene algún tiempo el post pero en el caso de la respuesta que has dejado no importa, al menos en mi caso el aporte que dejas me resulta novedoso. No sabía que usando un DTD estricto no funcionaría innerHTML en mozilla

gracias por el aporte y bienvenido a los foros

Un saludo
  #14 (permalink)  
Antiguo 06/09/2005, 08:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
No me cuadra...

Hola:

También te doy la bienvenida ...

Pues como dice el título... no me cuadra... las DTD creo que se aplican a cosas "implementadas" pero innerText me parece que (aún hoy) sigue sin ser implementado en mozilla (no digo lo mismo de innerHTML) me alegraría saber que estoy equivocado, pero recorriendo los atributos del "document.body" sigo sin encontrarlo...

Aunque no hay definida ninguna DTD, puedes ver la lista de atributos que implementa mozilla para cualquier nodo de un documento html (incluyendo document.body) en una página que he desarrollado y que puedes ver aquí: http://www.pepemolina.com/DOM/destripador.html

... busca entre los hijos de "window.document" al objeto "body" y podrás ver que no lo lista... incluso en donde pone "probar código" puedes insertar:
alert(document.body.innerText)
´´´ó ...
alert(document.body.innerHTML)

Y verás que una cosa está implementada y otra no...

Bueno, hablo de firefox 1.0 sobre windows XP

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #15 (permalink)  
Antiguo 06/09/2005, 08:56
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola a todos.

Me ha sorprendido mucho lo del innerHTML en Firefox, así que he hecho una página muy sencilla, que pasa la validación estricta y funciona sin ningún problema:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
>
    
<
html>
<
head>
<
title>Untitled</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</
head>
<
body onload "document.getElementById('pepe').innerHTML = 'Hola Don Pepito'">
<
div id="pepe"></div>
</
body>
</
html
Saludos,
  #16 (permalink)  
Antiguo 06/09/2005, 09:07
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Javi: En el mensaje que puse hace ya bastante tiempo (¡ha llovido!) digo que innerHTML funciona, y que innerText no... La cosa es que me sorprendió mucho que digan lo contrario, ya que en aquellos tiempos encontré una tabla de "compatibilidades" (por favor, ne me pidan el link porque es posible que ya no lo tenga...¿?) y decía lo mismo que yo he afirmado en el mensaje (no tengo coartada)...
... ¿Has probado lo mismo con innerText...?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #17 (permalink)  
Antiguo 06/09/2005, 09:22
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola caricatos

No había probado con innerText porque daba por supuesto que no funcionaría en Firefox (ya hemos visto unos cuantos mensajes en el foro sobre el tema), pero por despejar completamente la duda, lo acabo de probar y no funciona, aunque la página valida perfectamente

Saludos,
  #18 (permalink)  
Antiguo 06/09/2005, 09:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Gracias Javi:

Gracias por comprobar (y en cierta manera corroborar) mi afirmación... Y es que creo que soy bastante "cabezota" y suelo defender lo que digo...
Vamos, que se podría decir que "mi palabra va a misa" (y por lo "bajini" decir "gracias a Dios soy ateo) [interpretaciones de un caricaturista]...

...Es que validación y funcionamiento me parece que no tiene mucho que ver (otra opinión personal)... Me acuerdo que para poder pasar la validación de enlaces con target's se usaba javascript (this.target)

Esperemos la respuesta de ghismo... o de quien pueda aportar algo al tema.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #19 (permalink)  
Antiguo 06/09/2005, 10:24
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Cita:
Iniciado por JavierB
Hola a todos.

Me ha sorprendido mucho lo del innerHTML en Firefox, así que he hecho una página muy sencilla, que pasa la validación estricta y funciona sin ningún problema:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
>
    
<
html>
<
head>
<
title>Untitled</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</
head>
<
body onload "document.getElementById('pepe').innerHTML = 'Hola Don Pepito'">
<
div id="pepe"></div>
</
body>
</
html
Saludos, :adios:
Hola a todos.

Antes quería decir que con XHTML strict, el innerHTML no es soportado por Mozilla. En el caso de que utilicemos únicamente la cabecera
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"

si funciona correctamente. Pero si el fichero es un xhtml y no un html necesitamos tambien añadir
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"
en este último, Mozilla no reconoce el método innerHTML.

Espero haber especificado mejor. Tenéis toda la razón si fuera un html con cabecera xhml.

Un saludo
  #20 (permalink)  
Antiguo 06/09/2005, 10:31
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola ghismo

He hecho una prueba más (creo que es la tercera con este mensaje) y, efectivamente, con la última cabecera que has puesto no funciona en Firefox. Algo más que se aprende.

Saludos,
  #21 (permalink)  
Antiguo 06/09/2005, 10:48
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Haciendo alardes de pésimo probador...

Hola:

Acabo de pegar (usando firefos) este código:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"> 

<html> 
<head> 
<title>Untitled</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
</head> 
<body onload = "document.getElementById('pepe').innerHTML = 'Hola Don Pepito'"> 
<div id="pepe"></div> 
</body> 
</html>
En mi archiconocido probador de códigos: http://www.pepemolina.com/probador/

Y sale una página (sin errores) con el texto: "Hola Don Pepito"...

Estoy un poco confundido...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #22 (permalink)  
Antiguo 06/09/2005, 11:04
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo caricatos

El que está confundido y mucho soy yo. Pongo a Zeus por testigo de que probé el código y no salía ningún Don Pepito Lo he vuelto a probar y si funciona bien, tal como puede verse aquí

Bueno, lo mejor que puedo hacer es dejarme de probar códigos y probar una cervecita. Seguro que me sienta mejor

Saludos,
  #23 (permalink)  
Antiguo 06/09/2005, 11:07
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Mensaje

Probablemente sea porque el formato utilizado sea html en vez de xhtml.
Deja de funcionar en un xhtml estricto.

Ejemplo: documento.xhtml
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"

<
html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"
    <
head
        <
title>Untitled</title
        <
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    </
head
    <
body onload "document.getElementById('pepe').innerHTML = 'Hola Don Pepito'"
        <
div id="pepe"></div
    </
body
</
html
En el probador de codigos no es posible realizar la prueba. Debe ser un archivo xhtml.

Saludos
  #24 (permalink)  
Antiguo 06/09/2005, 11:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por JavierB
Hola de nuevo caricatos

...

Bueno, lo mejor que puedo hacer es dejarme de probar códigos y probar una cervecita. Seguro que me sienta mejor

Saludos,
Pues, ya que te pones así, aprovecho para hacer un brindis (ya se nos ocurrirá algún motivo)... pero lo voy a dejar pendiente hasta que llegue a "mi currelo"... salgo ahorita mismo...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #25 (permalink)  
Antiguo 06/09/2005, 11:14
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola ghismo:

Nos hemos cruzado (algo bastante habitual en ocasiones)

Pues esa puede ser la razón (ni lo discuto, ni pienso probarlo por ahora)...

De todos modos reitero mi bienvenida y espero que sigas aportando tus conocimientos e inquietudes.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #26 (permalink)  
Antiguo 06/09/2005, 11:22
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Gracias por la bienvenida.

Espero seguir aportando mis escasos conocimientos y encuentre tambien soluciones a mis problemas.

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 18:31.