Какова лучшая стратегия для предоставления необходимой новой версии jQuery (1.4.2) в сценарии пользователя, которая изменяет страницу, на которой уже есть более старая версия jQuery (1.3.1)?
Предпочтительно, чтобы исходная страница продолжала использовать знак «$», в то время как в моем сценарии используется псевдоним, назначенный jquery.noConflict()
.
Согласно ответу на этот вопрос , любая дополнительная версия, которую вы хотите загрузить, должна быть помещена над оригинальным тегом скрипта. Здесь я немного запутался, так как у меня сложилось впечатление, что GreaseMonkey выполняет скрипт после загрузки страницы?
РЕДАКТИРОВАТЬ: Одна мысль в тексте пользователя, добавить тег сценария для jQuery 1.4.2, установить псевдоним, а затем снова добавить тег сценария для 1.3.1, чтобы не нарушать код исходной страницы , который использует функции 1.3.1.
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);
*/
Но для этого потребуется загрузка библиотеки jQuery 3 раза на страницу. Есть ли лучший способ?
РЕДАКТИРОВАТЬ 2: Кажется, что оригинальная страница все еще может использовать свою копию 1.3.1, несмотря на то, что сценарий GM предоставил копию 1.4.2, они могут сосуществовать так же долго, как я использую новый псевдоним (gj
) для ссылки на объект jQuery 1.4.2 внутри code142()
.
Если больше ничего не появится, тогда это будет моим решением. Я надеюсь, что это полезно для других людей, которые могут столкнуться с этой проблемой.