Problemas con las capas y los navegadores
Hola:
Gracias por tu atención. Verás, estoy haciendo una aplicación web y tengo unos menus desplegables que genero mostrando y ocultando capas. El problema que tengo es que esa aplicación debe servir para distintos navegadores (Netscape, Mozilla, IExplorer, Opera,...). Pero me contento con que funcione para IExplorer y Netscape. Estoy jugando con las últimas versiones de estos navegadores (Nescape 7 e IExplorer 6) y la capa que debo mostrar y ocultar se llama "_capa" (atributo id del elemento div). Este es el script que llevo, pero no me hace ni caso, entra bien, pero no muestra las capas en el caso de Netscape. ¿Qué puedo hacer?
Script:
var capa
var ns4=false;
var ie4=false;
var opera = false;
var other = false;
navegador = navigator.appName;
if( navegador.toUpperCase().indexOf("EXPLORER") >= 0 ){
ie4 = true;
}else if( navegador.toUpperCase().indexOf("NETSCAPE") >= 0 ){
ns4 = true;
}else if( navegador.toUpperCase().indexOf("OPERA") >= 0 ){
opera = true;
}else{
other = true;
}
function init() {
if (ns4 || opera || other) {
capa = document._capa
}
if (ie4) {
capa = _capa.style
}
}
function Mostrarocultar(obj)
{
alert("Navegador: "+navegador);
if(ie4){
if(obj.visibility=="hidden")
obj.visibility="visible";
else
obj.visibility="hidden";
} else if(ns4 || opera) {
if(obj.visibility=="hide")
obj.visibility="show";
else
obj.visibility="hide";
}
}
Y en el body tengo un onLoad que llama a la funcion init().
Gracias por la ayuda
Gracias por tu atención. Verás, estoy haciendo una aplicación web y tengo unos menus desplegables que genero mostrando y ocultando capas. El problema que tengo es que esa aplicación debe servir para distintos navegadores (Netscape, Mozilla, IExplorer, Opera,...). Pero me contento con que funcione para IExplorer y Netscape. Estoy jugando con las últimas versiones de estos navegadores (Nescape 7 e IExplorer 6) y la capa que debo mostrar y ocultar se llama "_capa" (atributo id del elemento div). Este es el script que llevo, pero no me hace ni caso, entra bien, pero no muestra las capas en el caso de Netscape. ¿Qué puedo hacer?
Script:
var capa
var ns4=false;
var ie4=false;
var opera = false;
var other = false;
navegador = navigator.appName;
if( navegador.toUpperCase().indexOf("EXPLORER") >= 0 ){
ie4 = true;
}else if( navegador.toUpperCase().indexOf("NETSCAPE") >= 0 ){
ns4 = true;
}else if( navegador.toUpperCase().indexOf("OPERA") >= 0 ){
opera = true;
}else{
other = true;
}
function init() {
if (ns4 || opera || other) {
capa = document._capa
}
if (ie4) {
capa = _capa.style
}
}
function Mostrarocultar(obj)
{
alert("Navegador: "+navegador);
if(ie4){
if(obj.visibility=="hidden")
obj.visibility="visible";
else
obj.visibility="hidden";
} else if(ns4 || opera) {
if(obj.visibility=="hide")
obj.visibility="show";
else
obj.visibility="hide";
}
}
Y en el body tengo un onLoad que llama a la funcion init().
Gracias por la ayuda
¿ Qué tienen en común todos los navegaadores modernos ? Soportan todos (mas o menos pero soportan) las recomendaciones del W3C. En este caso, ¿ porqué intentas utilizar el DOM obsoleto de IE 4 ?
Además, hace ya años que para distinguir los navegadores, se detecta sus capcitades y no el UA que no sirve para mucho. Te has complicado bastante la cosa creo. POr cierto, es probibido en HTML empezar un atributo id por un underscore :
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Aquí tienes algo que te funcionará en todos los navegadores de generción 5+ :
function mostrarocultar(quien,accion)
{
document.getElementById(quien).style.visibility = accion;
}
y en el HTML :
<div onmouseover="mostrarocultar('lista','hidden');" onmouseout="mostrarocultar('lista','visible')">test</div>
<ul id="lista">
<li>item1</li>
<li>item2</li>
<ul>
Además, hace ya años que para distinguir los navegadores, se detecta sus capcitades y no el UA que no sirve para mucho. Te has complicado bastante la cosa creo. POr cierto, es probibido en HTML empezar un atributo id por un underscore :
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Aquí tienes algo que te funcionará en todos los navegadores de generción 5+ :
function mostrarocultar(quien,accion)
{
document.getElementById(quien).style.visibility = accion;
}
y en el HTML :
<div onmouseover="mostrarocultar('lista','hidden');" onmouseout="mostrarocultar('lista','visible')">test</div>
<ul id="lista">
<li>item1</li>
<li>item2</li>
<ul>