Come incorporare il widget Javascript che dipende da jQuery in un ambiente sconosciuto

Sto sviluppando un widget javascript che dipende da jQuery. Il widget può o non può essere caricato su una pagina che ha già caricato jQuery. Ci sono molti problemi che si presentano in questo caso …

  1. Se la pagina web non ha jQuery, devo caricare il mio jQuery. Tuttavia, sembra che ci sia un delicato problema di temporizzazione. Ad esempio, se il mio widget viene caricato ed eseguito prima del caricamento e dell’esecuzione di jQuery is not defined , ricevo un errore jQuery is not defined .

  2. Se la pagina web ha jQuery, di solito posso lavorarci. Se la versione di jQuery è vecchia, tuttavia, vorrei caricare la mia. Tuttavia, se carico il mio, devo farlo in modo tale da non calpestare la sua variabile $ . Se imposto jQuery.noConflict() e uno qualsiasi dei loro script dipende da $ , ho appena infranto la loro pagina.

  3. Se la pagina web utilizza un’altra libreria javascript (ad es. Prototipo), dovevo anche essere sensibile alla variabile $ del prototipo.

A causa di tutto quanto sopra, sembra più semplice non dipendere da jQuery. Ma prima di andare su quella strada, che comporterà principalmente la riscrittura del mio codice di widget, volevo prima chiedere consigli.

Lo scheletro di base del mio codice, incluso il bug di temporizzazione e talvolta $ bug, segue:

  //    

Il mio widget ha la seguente struttura:

 (function($) { var mywidget = { init: function() { ... } }; $(document).ready(function() { mywidget.init(); }); })(jQuery); 

Se ci sono indicatori o risorse per raggiungere un widget che può funzionare in tutti gli ambienti citati, sarebbero molto apprezzati.