Quelle est la meilleure stratégie pour fournir une nouvelle version nécessaire de jQuery (1.4.2) dans un script utilisateur, qui modifie une page qui a déjà une ancienne version de jQuery (1.3.1)? De préférence, la page d'origine continue à utiliser le signe '$' tandis que dans mon script, elle utilise un alias affecté par jquery.noConflict()
.L'utilisation de jQuery 1.4 dans GreaseMonkey alors que la page d'origine utilise jQuery 1.3 (version différente)?
Selon la réponse à this question, toute version supplémentaire que vous souhaitez charger doit être placée au-dessus de l'étiquette de script d'origine. C'est là que je suis un peu confus, puisque je suis sous l'impression GreaseMonkey exécute le script après chargement de la page?
EDIT: Une pensée est dans le userscript, ajoutez une balise de script pour jQuery 1.4.2, alias défini, puis ajouter une balise de script pour 1.3.1 à nouveau afin de ne pas briser le code de la page originale, qui utilise 1.3.1 fonctions.
var code142 = function() {
gj = jQuery.noConflict(true);
alert("142...");
alert(gj); // check if the dollar (jquery) function works
alert(gj().jquery); // check jQuery version
}
var script = document.createElement("script");
script.src = 'http://code.jquery.com/jquery-1.4.2.min.js'
document.documentElement.appendChild(script);
// assign jquery object alias and run code that uses 1.4.2 there
var script = document.createElement("script");
script.textContent = '(' + code142.toString() + ')();';
document.documentElement.appendChild(script);
/* The following is perhaps redundant, see EDIT 2 for more info
// add jquery 1.3.1 (again)
var script = document.createElement("script");
script.src = 'http://code.jquery.com/jquery-1.3.1.min.js'
document.documentElement.appendChild(script);
*/
Mais cela nécessitera le chargement de la bibliothèque jQuery 3 fois par page. Y a-t-il une meilleure façon?
EDIT 2: Il semble que la page d'origine puisse toujours utiliser sa copie 1.3.1, bien que le script GM ait fourni une copie 1.4.2, ils peuvent coexister aussi longtemps que j'utilise le nouvel alias (gj
) pour faire référence à l'objet jQuery 1.4.2 à l'intérieur de code142()
.
Si rien d'autre ne se présente alors ce serait ma solution. J'espère que c'est utile à d'autres personnes qui pourraient rencontrer ce problème.
Salut. La dernière version est requise dans ce cas, car l'ancienne version de la page d'origine ne prend pas en charge certaines des fonctionnalités que je souhaite utiliser pour mon script utilisateur. – Dan7