[jQuery-es] detectar funcionalidades (o discriminar browsers :S)
Choan C. Gálvez
choan.galvez en gmail.com
Mie Feb 21 08:49:47 PST 2007
Hello again.
On 2/21/07, carlos campderrós <gilipollas.desconcertante en gmail.com> wrote:
> On 2/21/07, Choan C. Gálvez <choan.galvez en gmail.com> wrote:
> > Hola Carlos.
>
> Hola Choan,
>
> > On 2/21/07, carlos campderrós <
> gilipollas.desconcertante en gmail.com> wrote:
> > > Buenas a todos,
> > >
> > > Mi primera experiencia con jquery ha ido muy bien. La primera
> experiencia de
> > > mi jefe con jquery no del todo (bueno, más que con jquery, con el js no
> > > intrusivo).
> > >
> > > Tengo esta página (es heredada, no puedo tocar casi nada, no me matéis):
> > > http://www.reformcampaign.net/. La parte del menú es lo que está hecho
> con
> > > jquery (
> http://www.reformcampaign.net/js/jquery_commands.js ).
> Inicialmente
> > > mostraba el menú desplegado y luego con jquery lo ocultaba, le añadía
> las
> > > clases necesarias para el css y ya está, con
> $(document).ready(function() {
> > > ... });.
> > >
> > > Esto provocaba que el menú se viera inicialmente abierto y rápidamente
> se
> > > plegara, creando un efecto de pequeño parpadeo, que hay que eliminar.
> >
> > Puedes usar un truquito bastante simpático que aprendí en algún bar y
> > publiqué en <
> http://blog.scriptia.net/articulos/2006/11/ocultar-elementos-por-css-si-y-solo-si-disponemos-de-javascript.html>.
>
> tampoco me sirve, o almenos no veo cómo puede servirme, ya que no sé con que
> instrucciones puedo detectar si la parte de jquery me funcionará o no.
>
> Es decir, si en konqueror, que ahora mismo es lo que me preocupa, pongo este
> código:
>
> if (document.getElementById && document.getElementsByTagName) alert('si
> js');
> $(document).ready(function() {alert('si jquery') });
>
> me salta el primer alert, pero no el segundo.
>
> Y referente al post... a mi me parece que meterle una clase al html por
> javascript te convierte en una página no válida (al fin y al cabo lo que se
> debe validar es el DOM, no el HTML, que es como si fuera un foto del DOM.
No estoy de acuerdo.
> > > Entonces coloqué tras el menú (sin document.ready ni nada) directamente
> la
> > > orden de plegado.
> > >
> > > Y ahora el problema: cuando lo tenía todo puesto en el document.ready,
> > > konqueror (y he de suponer que safari también) pasaban olímpicamente del
> > > tema. Y por mi parte ningún problema, seguían pudiendo navegar
> > > tranquilamente, aunque sin el efecto tan chachi del plegado y desplegado
> de
> > > menús (es lo que tiene el js no obstrusivo, no?). Ahora que he añadido
> el
> > > $(".inner_menu").hide() a pelo ahí en el menú, konqueror sí que me hace
> > > caso. Es decir, si visito la página con konqueror, veo un bonito menú
> > > plegado imposible de desplegar.
> > >
> > > Y después de todo esto rollazo... que puedo hacer para que si algún
> > > navegador no entiende el $(document).ready(function() { ... });, no
> ejecute
> > > la línea que esconde el menú, sin tener que esperar lógicamente a que
> toda
> > > la página esté cargada para hacerlo, ya que volvería a causar el
> parpadeo en
> > > los demás navegadores.
> >
> > Se me hace raro que `ready` no funcione correctamente. Ya hace unos
> > meses que jQuery usa window.onload como "fallback". Usia, si `ready`
> > no se ha disparado cuando se completa la carga "tradicional",
> > `window.onload` ejecuta las funciones que hayas asignado a `ready`
> > antes de hacer cualquier otra cosa.
> >
> > ¿Podrías comprobar que `ready` no se esté disparando _antes_ de tiempo?
>
> No se dispara. Ése es el problema. (ojo, hablo de konqueror, en FF i IE
> perfecto.)
> $(document).ready(function() {alert('si jquery') }); no hace ningún efecto.
Curioso. He gugleado un poquito y he dado con esto:
<http://batiste.dosimple.ch/blog/2007-02-11-1/>.
Según parece, a Konqueror se le atraganta la versión comprimida de
jQuery. ¿Estás usando la versión comprimida, por un casual?
(También he visto por ahí que ciertas animaciones de jQuery fallan en
Konqueror.)
> Existe algún debugger (usable) de JS para konqueror?
Ni idea.
Salud.
--
Choan
<http://choangalvez.nom.es/>
Más información sobre la lista de distribución jquery-es