Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подключить стороннии скрипты повле выполнения аякс-запроса. (https://javascript.ru/forum/events/63759-podklyuchit-storonnii-skripty-povle-vypolneniya-ayaks-zaprosa.html)

ureech 27.06.2016 14:59

Подключить стороннии скрипты повле выполнения аякс-запроса.
 
Всем привет.В шаблоне три блока.В зависимости от условий(заданны и передаются с сервера) аяксом подгружается тот или иной див.Например при условии if(album = 1) подгружается третий блок
$.post(url)
        .done(function( data ) {
            $('#cont').html(data);
}

При этом нужно в этом блоке подключить js файл.Правильно ли использовать
$.getScript("/js/script.js");
и в какое место его правильно будет прописать?

ureech 27.06.2016 15:39

Сделал так
$(document).ready(function() {
var scr = "/components/photos/js/jquery.galleriffic.js";
var scr2 = "/components/photos/js/board.core.js";

$('.phot_txt').on('click',function (e) {
  e.preventDefault()
 var id = $(this).parents('.photo_container').attr('id');
  var url = $('#'+id+' > a').attr('href');

getContent(url,scr, scr2, true);

});

});

    window.addEventListener("popstate", function(e) {
        getContent(location.pathname, false);
    });

    function getContent(url,scr, scr2, addEntry) {
        $.post(url)
        .done(function( data ) {
$.getScript(scr); 
$.getScript(scr2); 		
        $('#cont').html(data);	
		
            if(addEntry == true) {
                history.pushState(null, null, url);
            }

        });
		}


Но как то криво работает.Нет-нет, да зависнет или криво сработает.

join 28.06.2016 08:06

может скрипты надо грузить после html
$('#cont').html(data);
$.getScript(scr);
$.getScript(scr2);

Deff 28.06.2016 21:58

ureech, history.pushState успешно и без сбоев работает после window.onload
При $(document).ready(function() { - может подглючивать
Несколько скриптов лучше подгружать с интервалом(посколь при ассинхронке, второй может загрузиться ранее первого

23	$.getScript(scr); 
24	setTimeout(function() { $.getScript(scr2);},400);


Или просто объединить их в единый скрипт и подгружать единственный

Vlasenko Fedor 29.06.2016 14:05

$.getScript(scr)

таким образом загруженный скрипт не кешируется.
если скрипт постоянный то может
var el = document.createElement('script');
el.src = 'you path src'; 
document.body.appendChild(el);

данный вариант будет кешировать скрипт на клиенте и файл будет взят из кеша


Часовой пояс GMT +3, время: 19:48.