2010-05-02 12 views
16

Estoy desarrollando JavaScript que debería funcionar con Prototype.js o JQuery, así que necesito alguna forma de identificar cuál es la biblioteca principal en uso. ¿Cómo puedo hacer eso?

+2

¿Qué pasa si los dos están cargados? –

Respuesta

19

Puede comprobar para jQuery así:

if (window.$ === window.jQuery) 
5

Bueno, se puede comprobar la presencia de jQuery:

if(window.jQuery !== "undefined") 
{ 
    // jQuery Yay! 
} 

y luego, si se asigna a $

if(window.jQuery === window.$) 
{ 
    // jQuery Yay! 
} 
+1

Supuestamente significa 'typeof' en el primer ejemplo. – bobince

3

¿Podría jQuery noconflict ayudar? Entonces podría usar jQuery para jQuery y $ para prototipo.

3

@SLaks y @Chacha102 son adecuados para la detección de jQuery, pero si usted quiere asegurarse de que si la función $ no es de jQuery, proviene de PrototypeJS, puede:

​if (typeof $ == 'function'​​) { 
    if ($.fn && $.fn.jquery) { // $.fn.jquery contains the version number 
    // jquery 
    } else if (window.Prototype && Prototype.Version) { 
    // prototype 
    } 
}​ 
+0

El hecho de que Prototype esté allí no significa que '$' no se haya sobrescrito. – SLaks

+0

SLaks, sí, ya podría haber sido sobrescrito, por eso busco jQuery primero, pero si algo más lo hizo no se puede saber realmente ... – CMS

1

Escribir sin dependencia de ningún biblioteca y debería funcionar bien con jQuery y Prototype;)

En serio, ¿no es uno de los puntos principales de esta biblioteca evitar escribir tres variaciones diferentes de cada línea de código para cada navegador? Escribir código para tratar de adaptarse a más de una biblioteca parece bastante tonto.

De todos modos, al mirar la documentación de cualquiera de las bibliotecas durante aproximadamente 5 segundos, debería darle una pista sobre qué propiedades tendrá jq $ pt $ no. Esto sugiere que realmente no se ha molestado en observar las diferencias entre los marcos (que obviamente será la mejor manera de diferenciarlos, ¿no?). ¿Estás seguro de que sabes en lo que te estás metiendo?

Como muchos han mencionado:

var whosThatDollarSign = typeof window.$=='undefined' ? 'none' : (window.$==window.jQuery ? 'jQuery' : 'not jQuery') 
+0

Votaría esto si no empezaba a tener todo predicar al final. –

+0

No se preocupe, no voy a perder el sueño por eso. –

1

estoy desarrollando algo de JavaScript que debería funcionar ya sea con Prototype.js o jQuery, por lo tanto necesito alguna manera de identificar cuál es la biblioteca primaria en uso. ¿Cómo puedo hacer eso?

Su pregunta es ambigua, hay dos significados obvios para mí, así que responderé a ambos.

Si quiere decir que quiere escribir código que funcione independientemente de si se han utilizado jQuery o Prototype.js, la respuesta es que es bastante fácil escribir código que funciona independientemente de las bibliotecas que han sido, o serán cargada Por lo tanto, no es necesario descubrir cuál se ha utilizado.

Si quiere decir que va a escribir dos scripts separados, uno para jQuery y otro para Prototype.js, entonces, dependiendo de cuál "detecte", cargará un script u otro, entonces usted basando su código en una arquitectura muy mala. Ninguna de esas bibliotecas admite una selección particularmente amplia de navegadores y ambas necesitan actualizarse cada vez que sale una nueva versión, incluso de las "populares" que admiten.

Intentar admitir tanto el uso de secuencias de comandos independientes creará un dolor de cabeza de mantenimiento en curso - por dos. O tal vez esa es tu intención.

-

Rob

Cuestiones relacionadas