Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2013, 20:22
Интересующийся
Отправить личное сообщение для AkidSe Посмотреть профиль Найти все сообщения от AkidSe
 
Регистрация: 10.12.2013
Сообщений: 19

Перебор тегов <javascript></script> ajax-загрузки
Всем привет! Огранизовал у себя на сайте ajax-навигацию. Вроде все сделал но оказалось что ajax не грузит js-код вместе с файлами которые загружает. Поэтому я решил сделать это так: ищу в загруженной странице теги <script></script> выбираю оттуда src и перебираю, загружая все js функцией getScript . Но не все так просто как я думал. Jquery не может найти теги <script> вообще.
Вот код:
$.ajax({
        type: "POST",
        url: uri,
        data: {
          uri: uri
        },
        cache: false,
        timeout: 0,
        success: function(data){
          // вывод в блок <div id="data">
            var title = data.replace(/[\s\S]+<title>/,'').replace(/<\/title>[\s\S]+/, '');
           document.title=title;
           $('#content').remove();
           var uku=$('#content', data).html();
           $('.table_center').html(uku);

        $('script', uku).each(function() {
    console.log(this.src);
  });



}

В результате - ничего в консоле не вывелилось. Помогите, я буду благодарен.
______
Уй, не правильно назвал тему: Перебор тегов <script></script> ajax-загрузки
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2013, 20:28
Интересующийся
Отправить личное сообщение для AkidSe Посмотреть профиль Найти все сообщения от AkidSe
 
Регистрация: 10.12.2013
Сообщений: 19

Я уже догадываюсь в чем дело. Походу ajax и <script></script> также игнорирует. Подскажите, пожалуйста, как это обойти..
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2013, 22:10
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от AkidSe
Я уже догадываюсь в чем дело.
Что возвращается в data?
console.log(data)


Вы уверены что это работает?
var uku=$('#content', data).html();


PS:
alert('<title>text</title>'.replace(/<title>(.*)<\/title>/, '$1'))

Последний раз редактировалось monolithed, 13.12.2013 в 22:15.
Ответить с цитированием
  #4 (permalink)  
Старый 13.12.2013, 22:25
Интересующийся
Отправить личное сообщение для AkidSe Посмотреть профиль Найти все сообщения от AkidSe
 
Регистрация: 10.12.2013
Сообщений: 19

Все отлично работает. Кусок страницы загружается в контейнер. На счет title - не уверен. Вроде когда ставил - работало, сейчас - не знаю, работает ли. Посмотрю сейчас.
А data - ну то что загрузил ajax-запрос, то есть страницу сайта. (например index.php, загружает всю страницу, я выбираю контейнер нужный мне и сохраняю в другом диве.
P.S извините, может неправильно вас понял..

Последний раз редактировалось AkidSe, 13.12.2013 в 22:29.
Ответить с цитированием
  #5 (permalink)  
Старый 13.12.2013, 22:33
Интересующийся
Отправить личное сообщение для AkidSe Посмотреть профиль Найти все сообщения от AkidSe
 
Регистрация: 10.12.2013
Сообщений: 19

alert('<title>text</title>'.replace(/<title>(.*)<\/title>/, '$1')) - возвращает только text. А мой код со сменой заголовка - работает на 100%.
console.log(data) - возвращает то что и должен возвращать - загруженую html страницу с js, который не работает, блин.(ну не прям страницу - а текст в консоли)
Ответить с цитированием
  #6 (permalink)  
Старый 13.12.2013, 22:39
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от AkidSe
alert('<title>text</title>'.replace(/<title>(.*)<\/title>/, '$1')) - возвращает только text. А мой код со сменой заголовка - работает на 100%.
Вы сами этот код писали?
document.title = data.replace(/<title>(.*)<\/title>/, '$1');


Сообщение от AkidSe
загруженую html страницу с js, который не работает, блин
А с чего он должен работать?
Ответить с цитированием
  #7 (permalink)  
Старый 13.12.2013, 22:44
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

И еще раз повторю, что делает по вашему эта строка?

var uku=$('#content', data).html();


Замените на:
var uku=$('#content', $(data)).html();

Последний раз редактировалось monolithed, 13.12.2013 в 22:49.
Ответить с цитированием
  #8 (permalink)  
Старый 13.12.2013, 23:14
Интересующийся
Отправить личное сообщение для AkidSe Посмотреть профиль Найти все сообщения от AkidSe
 
Регистрация: 10.12.2013
Сообщений: 19

Сообщение от monolithed Посмотреть сообщение
Вы сами этот код писали?
document.title = data.replace(/<title>(.*)<\/title>/, '$1');
Неа, в интернете посмотрел.
var uku=$('#content', data).html(); - отделяет от всей загружаемой страницы один контейнер #content что нужен мне. Сейчас ваш код попробую, но не думаю что что-то изменится.
Ну да, js, никак не будет работать.

Последний раз редактировалось AkidSe, 13.12.2013 в 23:27.
Ответить с цитированием
  #9 (permalink)  
Старый 14.12.2013, 00:05
Интересующийся
Отправить личное сообщение для AkidSe Посмотреть профиль Найти все сообщения от AkidSe
 
Регистрация: 10.12.2013
Сообщений: 19

А будет ли разумно сделать вот такую альтернативу:
Создается скрытый div в head . А в нем я вызываю тот js файл который хочу я. Например:
<div id='#myjsfiles' src='/sys/js/lol.js'></div>
а потом, при загрузке ajax просто перебирать єтот див и вставлять js файлы:
$('#myjsfiles', data).each(function() {
$.getScript(this.src);
});
Ну как, не слишком тупо, грубо? Просто я уже в отчаянии. Загружать все js файлы при первой загрузке - не охота, + неактуально.
Ответить с цитированием
  #10 (permalink)  
Старый 14.12.2013, 01:42
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от AkidSe
Загружать все js файлы при первой загрузке - не охота, + неактуально.
Может вам сначала нужно было сказать что вы хотите?

То что вам нужно называется отложенная загрузка (Lazyload) гуглите в сторону готовых решений (если не хотите разобраться как это должно работать) RequireJS, AngularJS, YepnopeJS.

Также возможно подойдет простой JSONP

Сообщение от AkidSe
Загружать все js файлы при первой загрузке - не охота, + неактуально.
А делать лишние запросы на сервер охото?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неверная обработка ajax запроса в chrome. Реализация анимации загрузки chiffenok AJAX и COMET 0 29.07.2013 09:02
Не работает анимация при загрузки ajax ArtOs Общие вопросы Javascript 0 24.05.2012 17:52
ВЫПОЛНЕНИЕ JAVASCRIPTA ПОСЛЕ AJAX ЗАГРУЗКИ nemoon Общие вопросы Javascript 12 12.06.2011 21:10
Перебор вложенных тегов. werdes jQuery 0 27.07.2010 11:51
Ajax и получение ответа до полной загрузки страницы Suspended jQuery 3 16.11.2008 14:57