Foros del Web » Programando para Internet » Javascript »

Problemas con document.all en NS 7.0

Estas en el tema de Problemas con document.all en NS 7.0 en el foro de Javascript en Foros del Web. Hola Compañeros tengo una página ( pagina.htm ) y un archivo ( funciones.js ) en dicho archivo desde luego tengo mis funciones JavaScript. Pero resulta, ...
  #1 (permalink)  
Antiguo 23/10/2003, 15:08
Avatar de DevCH  
Fecha de Ingreso: marzo-2003
Ubicación: Villahermosa, Tabasco, Mé
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Problemas con document.all en NS 7.0

Hola

Compañeros tengo una página (pagina.htm ) y un archivo (funciones.js ) en dicho archivo desde luego tengo mis funciones JavaScript.

Pero resulta, que en IE, todo funciona a la perfeción pero en NS 7.0, no mas no hace nada

en el body de mi página tengo esto:
Cita:

function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>

<script language="JavaScript1.2" src="filefunc.js"></script>
<script language="JavaScript" src="mm_menu.js"></script>

<link href="/html/estilos.css" rel="stylesheet" type="text/css">

</head>

<body bgcolor="#FFFFFF" background="./images/pagina_base/back_cafeclaro.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="initiate(1);MM_preloadImages('./images/pagina_base/menues/boletinoficial_on.gif','./images/pagina_base/menues/servicios_on.gif','./images/pagina_base/menues/formacion_on.gif','./images/pagina_base/menues/proyecto_on.gif','./images/pagina_base/kinder2_on.gif','./images/pagina_base/primaria2_on.gif','./images/pagina_base/secundaria2_on.gif')">

<script language="JavaScript1.2">mmLoadMenus();</script>

<!-- **** BEGIN LAYERS -->

<div id="scrollerbg" style="position:absolute;top:-1000px"></div>
<div id="scrollertext" style="position:absolute;top:-1000px"></div>
<DIV id="deletethisdiv" style="position:absolute;top:132;left:418px;width: 360px; height:20px"></DIV>

<div id="primaria" style="position:absolute; left:198px; top:420px; width:345px; z-index:1; height: 72px; background-color: D8C8A0; layer-background-color: D8C8A0; border: 0px none #000000;"></div>
<div id="secundaria" style="position:absolute; left:198px; top:420px; width:345px; z-index:1; height: 72px; background-color: D8C8A0; layer-background-color: D8C8A0; border: 0px none #000000;"></div>
<div id="kinder" style="position:absolute; left:198px; top:420px; width:345px; z-index:3; height: 72px; background-color: D8C8A0; layer-background-color: D8C8A0; border: 0px none #000000;"></div>
etc, etc...

en en mi archivo filefunc.js, tengo esto:

Cita:
function initiate(pval){
if (pval==1){
movediv(1)
}
}

function movediv(pval){
var ovar= new Array()
var oref= new Array()
var oima= new Array()

if (pval==1) {
ovar[0]="Maternal y Kinder"
ovar[1]="Servicios en Kinder"
ovar[2]=""
ovar[3]=""
oref[0]=""
oref[1]="href='/html/servkinder.htm'>"
oref[2]=""
oref[3]=""
oima[0]=""
oima[1]="<img src='/images/pagina_base/bullet.gif' width='8' height='8'> "
oima[2]=""
oima[3]=""
}
if (pval==2) {
ovar[0]="Primaria"
ovar[1]="Servicios en Primaria"
ovar[2]=""
ovar[3]=""
oref[0]=""
oref[1]="href='/html/servprimaria.htm'>"
oref[2]=""
oref[3]=""
oima[0]=""
oima[1]="<img src='/images/pagina_base/bullet.gif' width='8' height='8'> "
oima[2]=""
oima[3]=""
}
if (pval==3) {
ovar[0]="Secundaria y Bachillerato"
ovar[1]="Servicios en Secundaria"
ovar[2]="Servicios en preparatoria"
ovar[3]=""
oref[0]=""
oref[1]="href='/html/servsecundaria.htm'>"
oref[2]="href='/html/servbachillerato.htm'>"
oref[3]=""
oima[0]=""
oima[1]="<img src='/images/pagina_base/bullet.gif' width='8' height='8'> "
oima[2]="<img src='/images/pagina_base/bullet.gif' width='8' height='8'> "
oima[3]=""
}
contenttext="<table width='350' border='0' cellpadding='0' cellspacing='0' bgcolor='#000000'>"
+" <tr>"
+" <td><img src='/images/pagina_base/pixel.gif' width='350' height='1'></td>"
+" </tr>"
+" </table>"
+" <table width='344' height='70' border='0' align='center' cellpadding='0' cellspacing='0'>"
+" <tr> "
+" <td width='11' height='70' rowspan='5'>&nbsp;</td>"
+" <td width='339'><img src='/images/pagina_base/pixel.gif' width='2' height='5'></td>"
+" </tr>"
+" <tr> "
+" <td height='16' valign='top' nowrap> "
+" <p><strong><font color='660000' size='2' face='Verdana, Arial, Helvetica, sans-serif'> "
+ ovar[0]+"</font></strong></p></td>"
+" </tr>"
+" <tr> "
+" <td height='16' nowrap>"
+"<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'><strong>"+oima[1]
+" </strong><font color='#000000'><a "+oref[1]+ovar[1]+"</a></font></font></p></td>"
+" </tr>"
+" <tr> "
+" <td height='16' nowrap>"
+"<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'><strong>"+oima[2]
+" </strong> <font color='#000000'><a "+oref[2]+ovar[2]+"</a> "
+" </font></font></p></td>"
+" </tr>"
+" <tr> "
+" <td height='16' nowrap>"
+"<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'><strong>"+oima[3]
+" </strong><font color='#000000'><a "+oref[3]+ovar[3]+"</a> "
+" </font></font></p></td>"
+" </tr>"
+" <tr> "
+" <td><img src='/images/pagina_base/pixel.gif' width='2' height='5'></td>"
+" </tr>"
+" </table>"
+" <table width='350' border='0' cellpadding='0' cellspacing='0' bgcolor='#000000'>"
+" <tr>"
+" <td><img src='/images/pagina_base/pixel.gif' width='350' height='1'></td>"
+" </tr>"
+" </table>"

if (pval==1) {kinder.innerHTML=contenttext}
if (pval==2) {primaria.innerHTML=contenttext}
if (pval==3) {secundaria.innerHTML=contenttext}

if (document.layers) {
if (pval==1) {
kinder.document.write(contenttext)
document.kinder.document.close()
}
if (pval==2) {
document.primaria.document.write(contenttext)
document.primaria.document.close()
}
if (pval==3) {
document.secundaria.document.write(contenttext)
document.secundaria.document.close()
}
}

}
en IE funciona bien pero en NS no hace nada.
No me evalua if (document.layers ) ni if (document.all ), es decir, no entra a esas condiciones...


mucho les agradeceré me hechen la mano en esto que ya llevo varios dias sin que se pueda resolver...

saludos y desde ya muchas gracias...

DevCH
  #2 (permalink)  
Antiguo 23/10/2003, 15:37
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
Son los problemas de diseñar para Internet Explorer, a veces se inventan cosas que sólo ellos soportan.

document.all fue un invento de IE 5 que no es estandar en absoluto, por eso casi todos los otros navegadores no lo soportan. Deberías utilizar getElementsById() en su lugar.
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 23/10/2003, 16:44
Avatar de DevCH  
Fecha de Ingreso: marzo-2003
Ubicación: Villahermosa, Tabasco, Mé
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Muchas grcias Cain.

Realice las pruebas que me indicaste, pero de todos modos, sigue sin dar resultados...

Otra cosa que me brinca la duda, es que, porque no funciona tampoco con if(document.layers ).

Será que es por la versión de NS 7.0

o es que necesito algun plug ins,
  #4 (permalink)  
Antiguo 24/10/2003, 02:00
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
No, el problema está en que document.all y document.layers son invenciones fuera de las normas estándar de la W3C. Eso debes ponerlo para los navegadores viejos que lo soportan, pero debes dejar un else{ document.getElementsById()}
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 24/10/2003, 07:47
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Estoy de acuerdo con Cain.

La filosofía original de Internet y de los navegadores es proporcionar un estandard para que podamos publicar y ver documentos casi en cualquier dispositivo. Un browser (IE, NS, O,...) debería ser indistinguible de otro en cuanto a como presenta los documentos. Igualmente una página web bien podría ser procesada por una nevera o por un motor o por un dispositivo de voz si los estandares se cumplen. Mas aún, nosotros podríamos construir nuestro propio browser con solo seguir los lineamientos del w3c.

Lamentablemente las compañías suelen desvirtuar esos estándares dándole a los programadores "truquitos" y "atajos" que de convertirse en populares hacen que el grueso de lo producido solo se vea en un navegador.

Eso da al traste con las posibilidades de ver los mismos resultados en todos los navegadores, da al traste con las posibilidades de interpretar en cualquier dispositivo un documento HTML y da al traste con las posibilidades teóricas de que gente como uno pueda hacer un navegador.

Saludos.
  #6 (permalink)  
Antiguo 24/10/2003, 08:00
Avatar de DevCH  
Fecha de Ingreso: marzo-2003
Ubicación: Villahermosa, Tabasco, Mé
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias por contestar compañeros, pero entonces, como quedaria el document.getElementById en este codigo, con siderando que "kinder" es una capa donde quiero que se construya una tabla, como se muestra en el primer post.

el codigo que utilizo actualmente ya con getElementById es:

if (document.getElementById){
document.kinder.document.write(contenttext)
document.kinder.document.close()

}

Mi pregunta es, las lineas que estan en negritas , cambian su sintaxis o que dan igual, porque ya le busque de varias maneras y no hay forma de que entre al IF...

Saludos

DevCH

PD. Es la primera ves que estoy haciendo una pagina (con la ayuda de este foro) y no sabia lo de W3C. Ofrezco una disculpa.
  #7 (permalink)  
Antiguo 24/10/2003, 08:36
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Discúlpame tu a mi, DevCH.

Viendo la primera parte de tu pregunta me doy cuenta de la naturaleza del código.

La pregunta (document.layers) pretende verificar si el navegador es o no Internet Explorer para ejecutar lo siguiente. Tu problema no esta en cambiar esa pregunta sino en proporcionar un "else" que resuelva el caso Netscape (por ejemplo).

En cuanto a no conocer al w3c, tampoco te sientas mal. Muchísima gente no lo conoce y pueden trabajar. Lo lamentable es cuando lo desconocen los diseñadores de los productos.

Voy a revisar a ver como puedes hacer tu else.

Ojalá alguien pueda ayudarnos.

Saludos.
  #8 (permalink)  
Antiguo 24/10/2003, 10:22
Avatar de DevCH  
Fecha de Ingreso: marzo-2003
Ubicación: Villahermosa, Tabasco, Mé
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Muchas gracias...

Compañeros, les pido por favor me ayuden a resolver este problema. Lo documentare una ves terminado para que sea anexado a las FAQ's de este valioso foro, con el permiso de los moderadores...

... siento que este problema a mas de uno le ha dado ya dolores de cabezas.


Saludos...


DevCH
  #9 (permalink)  
Antiguo 24/10/2003, 10:55
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 DevCH:

Te noto como muy perdido en algo que desde hace pocos años tenemos que saber los que hacemos páginas...

Te recomiendo que para referenciar un elemento cualquiera, le pongas un atributo id (que no esté repe) y uses:
document.getElementById("el_ID")
Dentro del paréntesis debes poner el id... por ejemplo:

<div id=capa style="background-color: red">capa roja o amarilla
Contenido de la caja
</div>
<b
onmouseover="document.getElementById('capa').style .backgroundColor = 'yellow'"
onmouseout="document.getElementById('capa').style. backgroundColor = 'red'">
Cambiar el color de la caja
</b>

El encanto de esto (DOM) es que puedes modificar practicamente todo desde cualquier elemento...

Otros elementos pueden modificarse a partir del tag y su índice (en el array de ese tag)
document.getElementByTagName("div")[0]...
y lo mismo con el atributo name...
document.getElementByName("el_Name")[0]...

Pero no es mi intención liarte... a medida que lo necesites, te iremos ayudando.

Saludos
  #10 (permalink)  
Antiguo 24/10/2003, 11:19
Avatar de DevCH  
Fecha de Ingreso: marzo-2003
Ubicación: Villahermosa, Tabasco, Mé
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola Caricatos, entiendo muy bien lo que dices en cuanto a que desde hace tiempo, lo deberia de saber, pero es que estoy debutando en el web y solo cuento con algunos manuales y FAQ's que he bajado principalmente de este foro.

Ahora bien, precisamente baje un artículo que anexo, donde lei mas acercada del getElementById . Ver articulo .

En fin, he logrado resolver una parte, ahora ya esposible ejecutarse tanto en NS, IE, Opera y Mozilla.

Aqui esta el código.

Considerando:

kinder = Capa
contenttext = Contenido HTML que pinta una tabla dentro de la capa 'kinder'.

Código:
if (document.layers) {

   // Asi funciona en IE 
   
   kinder.innerHTML=contenttext
   kinder.document.write(contenttext)
   document.kinder.document.close()
}

if (document.all){
    /*Por ahora no se que ponerle*/ 
}

if (document.getElementById ) {

   // Asi funciona en NS 7.0 al menos 

    document.getElementById ('kinder').innerHTML=contenttext
    document.kinder.document.write(contenttext)
    document.kinder.document.close()
}
Por supuesto, es un código de novato que ha decidido entrarle a la aventura del desarollo de paginas web...

Si alguien sabe de algo mejor, se los agradeceria de todo corazón...

Caricatos, con tu ejemplo, me queda mas claro eso del DOM... ¡Gracias!

Saludos a todos

DevCH
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 13:42.