Sto scrivendo un piccolo strumento JavaScript per me stesso che ho intenzione di rendere disponibile ad altre persone e utilizza jQuery. Il mio sogno per questa piccola utility è che le persone siano in grado di includere un singolo file .js
da una fonte remota e, quando questo file viene caricato, controllarlo per vedere se jQuery è già stato incluso e, in caso affermativo, accertarsi che sia una versione abbastanza recente in modo da essere compatibile con ciò che il mio codice deve fare. Alcuni pseudo che può spiegare il mio problema più chiaramente (questo codice visualizzato nella parte superiore del singolo .js
file già detto in precedenza):Compreso dinamicamente jQuery utilizzando JavaScript se non è già 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.
La mia domanda, distillata in tre parti amichevoli:
- E` è possibile caricare due versioni separate di jQuery senza che queste si scontrino l'una sull'altra?
- Posso interrompere l'esecuzione del mio codice JS mentre jQuery è caricato, quindi procedere?
- È possibile utilizzare noConflict() come lo sto descrivendo? O dovrei semplicemente chiamare tutto usando jQuery() e non dargli fastidio?
L'idea generale è che qualsiasi vecchio utente potrebbe afferrare un piccolo frammento di codice HTML e rilasciarlo nel loro sito/blog/qualunque cosa e farlo solo di lavoro ™. E poiché molte piattaforme di pubblicazione moderne ora vengono fornite con jQuery, non posso semplicemente ipotizzare che non sia in esecuzione e includerlo.
Grazie per il vostro tempo, e per favore fatemi sapere se una parte di questo non è chiaro o se posso fornire ulteriore contesto/dettaglio per rendere più facile la vostra risposta.
Domanda: da dove viene 'doMyStuff' ottenere chiamato nel caso' else'? –
Poiché jQuery ora può essere trovato in natura come 1.10.2 e 2.0.3, questa regex non funzionerebbe molto bene più. A prova di futuro, lo suggerirei invece: '/(^1\.([3-9]|\d{2 ,}))|((^[2-9])|^dd2 ,})/' –