Estoy escribiendo una pequeña herramienta de JavaScript para mí que planeo poner a disposición de otras personas y usa jQuery. Mi sueño para esta pequeña utilidad es que las personas puedan incluir un único archivo .js
desde una fuente remota y, cuando se cargue ese archivo, verifiquen si jQuery ya se ha incluido y, si es así, asegúrese de que sea una versión lo suficientemente reciente como para ser compatible con lo que mi código necesita hacer. Algunos pseudocódigo que puede explicar mi problema con mayor claridad (este código aparecería en la parte superior de la fila de a uno .js
he mencionado anteriormente):Dinámica Incluyendo jQuery usando JavaScript si no está presente
if jQuery is loaded {
if version is less than (say) 1.3 {
// load latest version of jQuery
}
} else {
// load latest version of jQuery
}
// and do the jQuery.noConflict()
// dance to avoid trampling any other libraries, etc. that the
// user may be utilizing.
// The rest of my code lives here, happy in the knowledge that it's running in
// isolation from the rest of the JS that the page knows about.
Mi pregunta, destilada en tres partes amigables:
- ¿Es es posible cargar dos versiones separadas de jQuery sin que se ataquen entre sí?
- ¿Puedo detener la ejecución de mi código JS mientras se carga jQuery, y luego continuar?
- ¿Es posible utilizar noConflict() como lo estoy describiendo? ¿O debería simplemente llamar a todo usando jQuery() y no molestarme con eso?
La idea general es que cualquier usuario de edad podía agarrar un pequeño fragmento de código HTML y colocarlo en su sitio/blog/lo que sea y hacer que sólo el trabajo ™. Y dado que muchas plataformas de publicación modernas ahora incluyen jQuery, no puedo simplemente suponer silenciosamente que no se está ejecutando e incluirlo.
Gracias por su tiempo, y por favor avíseme si alguna parte de esto no está clara o si puedo proporcionar un contexto/detalle adicional para facilitar su respuesta.
Pregunta: ¿de dónde viene 'doMyStuff' ser llamado en el caso' else'? –
Dado que jQuery ahora se puede encontrar en la naturaleza como 1.10.2 y 2.0.3, esta expresión regular ya no funcionaría muy bien. Para una prueba futura, sugeriría esto en su lugar: '/(^1\.([3-9]|\d{2,}))|(([[2-9])|^\d{2 ,})/' –