[jQuery-es] detectar funcionalidades (o discriminar browsers :S)

carlos campderrós gilipollas.desconcertante en gmail.com
Mie Feb 21 06:53:18 PST 2007


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.

> 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.
Existe algún debugger (usable) de JS para konqueror?

Salud.


Saludos

-- 
Si no puedes deslumbrar con tu inteligencia,
desconcierta con tus gilipolleces
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.scriptia.net/pipermail/jquery-es-scriptia.net/attachments/20070221/733f17e4/attachment.htm 


Más información sobre la lista de distribución jquery-es