2009-09-14 11 views
1

J'ai un bookmarklet complexe qui fait beaucoup de choses, et je compte
lourdement sur jQuery et quelques plugins (ui, soulageant, ect.)jQuery & plugins sans conflit bookmarklet

chose, Je ne sais pas si jQuery ou d'autres plugins sont déjà
inclus dans la page en cours, donc je ne dois pas les contredire,
mais nécessite également que mes fichiers soient maintenables.

Est-ce que quelqu'un a des idées pour y arriver?
une sorte de Clousers peut-être?

il est très important que ma bibliothèque jQuery.UI en annexe ne sera pas entrer en collision avec les ceux de la page.

Répondre

1

Le plus simple est d'inclure ce au début de votre bookmarklet:

$myjq = jQuery.noConflict(); 

Pour le reste le programme, utilisez $myjq au lieu de seulement $, comme ceci:

$myjq("#someId"); 
+1

Je sais cela, mais cela ne résout pas les conflits de plug-ins .. parce qu'ils s'adressent à jQuery et non à la noConlict – vsync

0

Cochez la case Documentation entry about this. JQuery fonctionne généralement bien avec les prototypes et autres bibliothèques qui utilisent le mot clé $. L'utilisation de l'astuce jQuery.noConflict() permet d'éviter les problèmes avec d'autres bibliothèques (prototype, mootools, etc.).

Vous pouvez toujours vérifier si jQuery est déjà inclus avant de l'inclure vous-même:

<script language="javascript"> 
    if(!jQuery){ 
     document.write('<script type="text/javascript" src="/js/jQuery.js"></script>'); 
    } 
</script> 
+0

et qu'en est-il des plugins en conflit avec ceux de la page? – vsync

+0

Avez-vous une idée de ce que les propres pages pourraient être? Les procédures de la documentation sont les seules que je connaisse pour éviter les conflits. Une façon d'éviter la collission est d'essayer de tout mettre en œuvre (aussi peu de variables globales que possible), et si vous utilisez des globals, assurez-vous qu'ils ont un nom unique (même chose avec les noms de vos fonctions). – Powertieke

+0

Comment puis-je mettre tous mes plugins dans une fermeture s'ils sont tous dans chaque fichier .js? les copier dans une énorme fermeture non maintenable? – vsync