Как найти / заменить HTML с JavaScript? - PullRequest
0 голосов
/ 01 декабря 2011

Я ищу решение javascript для поиска всех jQuery-скриптов на html-странице и замены кода последней версией jQuery.

Исходная строка:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

Заменитьс:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>

Ответы [ 3 ]

2 голосов
/ 01 декабря 2011

Большинство примеров, которые пишут люди, НЕ РАБОТАЮТ! (Примеры были удалены.) jQuery().jquery возвращает версию jQuery:

$("script[src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js']")
    .attr("src","http://code.jquery.com/jquery-1.7.1.js");
console.log(jQuery().jquery);

Это пишет 1.3.2 в консоль.Простое изменение src скрипта не приводит к запуску нового скрипта!Даже если вы дадите новому сценарию возможность загрузить с setTimeout или событием загрузки, он все равно не изменит версию.

Вы можете загрузить сценарий как AJAX-запрос и eval его.

jQuery.getScript("http://code.jquery.com/jquery-1.7.1.js");

Но даже это может не дать ожидаемого результата.Любая ссылка на jQuery или $ внизу страницы уже будет указывать на старый объект jQuery (версия 1.3.2), а не на новый.Таким образом, чтобы использовать 1.7.2, вам нужно будет eval все ваши скрипты только после получения и eval нового скрипта.Так что вам нужно найти другой способ, я боюсь.

Редактировать: Полагаю, вы могли бы сделать это:

jQuery.getScript("http://code.jquery.com/jquery-1.7.1.js", function () {
    // Only after jQuery has run
    jQuery.getScript('my-script-which-depends-on-1.7.js');
});

но это немного громоздко.

0 голосов
/ 01 декабря 2011
var all = document.querySelectorAll('script[src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"]'),
script;
for(var i=0, len = all.length; i < len; i++){
    script = all[i].cloneNode(false);
    script.src = "http://code.jquery.com/jquery-1.7.1.js";
    document.body.removeChild(all[i]);
    document.body.appendChild(script);
}

Это работает для меня.Вы можете увидеть это в этой демонстрации , но вам придется набрать команду $.fn.jquery в консоли, чтобы увидеть, что версия действительно изменилась.

0 голосов
/ 01 декабря 2011

Откройте исходный код вашего проекта в редакторе, таком как notepad ++ или в любом другом расширенном редакторе исходного кода. Выполните поиск текста «1.3.2 / jquery.min.js» во всех доступных исходных файлах (путем рекурсивного поиска в корне вашего проекта). Проверьте, нужно ли заменить все вхождения строки, а затем используйте инструмент поиска / замены, чтобы изменить его на последнюю версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...