Foros del Web » Programando para Internet » Javascript »

Visibilidad en Netscape

Estas en el tema de Visibilidad en Netscape en el foro de Javascript en Foros del Web. Tengo un combo con links que sólo funciona en Explorer. Ahora estoy tratando de diferenciar este de otros browsers con el siguiente código: ----------------------------------------------------- <script ...
  #1 (permalink)  
Antiguo 25/11/2003, 11:05
 
Fecha de Ingreso: enero-2002
Ubicación: Córdoba
Mensajes: 39
Antigüedad: 22 años, 4 meses
Puntos: 0
Pregunta Visibilidad en Netscape

Tengo un combo con links que sólo funciona en Explorer. Ahora estoy tratando de diferenciar este de otros browsers con el siguiente código:


-----------------------------------------------------
<script language=javascript>
<!--
function Mostrar(){
var browser;
browser = navigator.appName;
if (browser == "Microsoft Internet Explorer"){
window.bloque_exp.style.visibility = 'visible';
window.bloque_net.style.visibility = 'hidden'
}
else{
window.bloque_exp.style.visibility = 'hidden';
window.bloque_net.style.visibility = 'visible'
}
}
function Ir(){ //la llamo en el onchange del combo
if (document.frm.cbo.value != "")
document.location.href = frm.cbo.value
}
Mostrar()
//-->
</script>

<div id=bloque_exp style="visibility:hidden">
//muestro el combo
</div>

<div id=bloque_net class=txt_chico style="visibility:hidden">
//muestro una lista de links
</div>
-----------------------------------------------------


No sé cuál es el problema porque me da este error:
'window.bloque_exp.style' es nulo o no es un objeto

Probé sin el "window", con "document" pero nada.
No sé si tenga algo que ver que este código está incluido con SSI porque lo uso en varias páginas.
Bueno, espero me puedan dar una manito. Gracias desde ya.
Saludos

Andrea
  #2 (permalink)  
Antiguo 25/11/2003, 12:03
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, apicon.

Para Nescafé utiliza:

document.getElementById('bloque_exp).style...

Saludos,
  #3 (permalink)  
Antiguo 25/11/2003, 12:09
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Ademas de lo otro, te da error porque llamas a la función antes de que la etiqueta se cargue.

Quita el 'Mostrar()' del <script>
y ponlo cuando se carge el body, ej:

<body onload="Mostrar()">

Última edición por jercer; 25/11/2003 a las 12:12
  #4 (permalink)  
Antiguo 26/11/2003, 08:46
 
Fecha de Ingreso: enero-2002
Ubicación: Córdoba
Mensajes: 39
Antigüedad: 22 años, 4 meses
Puntos: 0
Gracias, chicos por sus respuestas. Con el llamado a la función desde el onload ya no me da el error, pero sigo sin poder ver los datos en Netscape, mientras que en Opera ahora me muestra el combo y milagrosamente anda, cosa que antes no, porque resulta quelo toma como Explorer.
Por ahí me dijeron que si no es Explorer use este código:

window.bloque_exp.visibility = 'hide';
window.bloque_net.visibility = show

También probé con el tuyo Javier, pero nada.

Si se les ocurre otra idea...
__________________
Andrea [;-)]
  #5 (permalink)  
Antiguo 26/11/2003, 17:40
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 1 mes
Puntos: 0
hola,

te conviene usar "detección de objetos" en lugar de obtener la cadena de identificación del navegador, la que es engorrosa y muy poco compatible, además de que en Opera (también en Konqueror de Linux, y en navegadores para la Mac también como el OmniWeb) te engaña porque estos browsers se pueden identificar como ellos quieran simplemente cambiando esta string, a la misma que usan cualquiera de las versiones de IE, u otros.

La detección de objetos es así: en lugar de usar el appName bla bla, chequeás que esté disponible un objeto, por ej:

if (document.getElementById) {
document.getElementById('ID').style.visibility = 'visible';
}

Esto :

- no "discrimina" a los navegadores (de hecho Opera y otros se "disfrazan" justamente para no ser "discriminados", algo que copiaron del navegador dominante hoy el IE, el que en los tiempos en que Mozilla y Netscape eran los dominantes, incluía la palabra "Mozilla" en su identificación, la que hasta ahora se mantiene, justamente para disfrazarse y eludir chequeos)

- evita fastidiosos mensajes de error en el IE y errores javascript en todos los navegadores. Si para el ejemplo de arriba el navegador no incluye soporte para getElementById(), sencillamente no ejecuta el código que sigue

La cuestión de la visibilidad de los layers es porque, para que un layer sea visible, la propiedad style.visibility debe ser 'visible', y para que esté oculto, debe ser 'hidden':

document.getElementById('LayerID').style.visibilit y = 'visible';

document.getElementById('LayerID').style.visibilit y = 'hidden';

saludos
  #6 (permalink)  
Antiguo 27/11/2003, 08:10
 
Fecha de Ingreso: enero-2002
Ubicación: Córdoba
Mensajes: 39
Antigüedad: 22 años, 4 meses
Puntos: 0
Ahora sí. Muchas gracias sci-fi y a todos.
__________________
Andrea [;-)]
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 20:46.