2009-07-13 8 views
12

Est-il possible d'avoir deux versions de jQuery différentes dans le même document, et de ne pas les faire entrer en collision les unes avec les autres? Par exemple si je crée un bookmarklet et que je veux baser le code sur jQuery.Deux versions de jQuery sur la même page

Ce bookmarklet est injecté sur une page qui utilise une autre version de jQuery alors mon code écraserait la version utilisée sur la page.

Est-il possible d'éviter cela? Ou y at-il d'autres bibliothèques qui fournissent cette fonctionnalité Ou peut-être que je devrais repenser le tout.

Merci pour les réponses et les pointeurs,

bob

+1

Vous pouvez vérifier si jQuery est déjà sur une page avant de l'injecter à nouveau. –

+3

Vous devriez certainement le repenser. Vous devriez mettre à jour les anciennes fonctions pour travailler avec le nouveau jQuery, y compris les deux est juste une tonne de ballonnements et un souhait de collisions. –

+0

Avez-vous le contrôle sur la version de jQuery ajoutée à la page? Vous ne voulez pas que vos visiteurs aient à télécharger UNE AUTRE version de la bibliothèque s'ils peuvent l'aider - c'est une mauvaise pratique et gonfle la taille du fichier pour vos visiteurs. –

Répondre

12

jQuery permet d'éviter les collisions. Après avoir chargé la première version, vous pouvez l'affecter à une variable différente.

var $j = jQuery.noConflict(); 

Puis chargez votre deuxième version de jQuery. Le premier que vous chargez est accessible avec $ j (...) tandis que le second est accessible avec $ (...).

Alternativement, quelqu'un a fait un little helper dans le but de faciliter le passage d'une version à une autre.

+0

bob ne contrôle pas quand la première version est chargée car cela se passe sur un site tiers via un bookmarket. vous pouvez appeler noConflct avant d'ajouter la nouvelle version via createElement ('script') - qui mettra à jour le site tiers. pouvez-vous supposer que le code des tiers est compatible? – russau

+0

Avec l'assistant Versions, vous pouvez basculer entre les différentes versions de jQuery quand vous le souhaitez. Dites simplement Versions.use ('jquery', 'default') ou Versions.use ('jquery', 'latest') après les avoir ajoutées pour basculer. Si son code utilise la version la plus récente et que le site tiers ne l'est pas, il doit simplement s'assurer qu'il définit correctement la version au début et à la fin de son code. – Chris

2

Voici un moyen de détecter est JQuery est déjà présent: jQuery in widget

travail sur la version la plus ancienne de JQuery votre code fonctionnera avec .. Et refusez de travailler si la version présente est trop ancienne. La plupart des sites utilisant JQuery sont à jour.

0

Pourquoi ne pas avoir différentes versions de votre javascript, pour différentes versions de jquery, alors, regardez quelle version est sur la page et obtenir le code approprié qui fonctionnera sur cette version de jquery. Ceci serait plus sûr, car toute autre chose pourrait être très fragile, car il semble que vous n'ayez aucun contrôle sur la version de jquery qui sera sur la page.

Questions connexes