
13.12.2013, 20:22
|
Интересующийся
|
|
Регистрация: 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-загрузки
|
|

13.12.2013, 20:28
|
Интересующийся
|
|
Регистрация: 10.12.2013
Сообщений: 19
|
|
Я уже догадываюсь в чем дело. Походу ajax и <script></script> также игнорирует. Подскажите, пожалуйста, как это обойти..
|
|

13.12.2013, 22:10
|
Особый гость
|
|
Регистрация: 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.
|
|

13.12.2013, 22:25
|
Интересующийся
|
|
Регистрация: 10.12.2013
Сообщений: 19
|
|
Все отлично работает. Кусок страницы загружается в контейнер. На счет title - не уверен  . Вроде когда ставил - работало, сейчас - не знаю, работает ли. Посмотрю сейчас.
А data - ну то что загрузил ajax-запрос, то есть страницу сайта. (например index.php, загружает всю страницу, я выбираю контейнер нужный мне и сохраняю в другом диве.
P.S извините, может неправильно вас понял..
Последний раз редактировалось AkidSe, 13.12.2013 в 22:29.
|
|

13.12.2013, 22:33
|
Интересующийся
|
|
Регистрация: 10.12.2013
Сообщений: 19
|
|
alert('<title>text</title>'.replace(/<title>(.*)<\/title>/, '$1')) - возвращает только text. А мой код со сменой заголовка - работает на 100%.
console.log(data) - возвращает то что и должен возвращать - загруженую html страницу с js, который не работает, блин.(ну не прям страницу - а текст в консоли)
|
|

13.12.2013, 22:39
|
Особый гость
|
|
Регистрация: 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, который не работает, блин
|
А с чего он должен работать?
|
|

13.12.2013, 22:44
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
И еще раз повторю, что делает по вашему эта строка?
var uku=$('#content', data).html();
Замените на:
var uku=$('#content', $(data)).html();
Последний раз редактировалось monolithed, 13.12.2013 в 22:49.
|
|

13.12.2013, 23:14
|
Интересующийся
|
|
Регистрация: 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.
|
|

14.12.2013, 00:05
|
Интересующийся
|
|
Регистрация: 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 файлы при первой загрузке - не охота, + неактуально.
|
|

14.12.2013, 01:42
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от AkidSe
|
Загружать все js файлы при первой загрузке - не охота, + неактуально.
|
Может вам сначала нужно было сказать что вы хотите?
То что вам нужно называется отложенная загрузка (Lazyload) гуглите в сторону готовых решений (если не хотите разобраться как это должно работать) RequireJS, AngularJS, YepnopeJS.
Также возможно подойдет простой JSONP
Сообщение от AkidSe
|
Загружать все js файлы при первой загрузке - не охота, + неактуально.
|
А делать лишние запросы на сервер охото?
|
|
|
|