Подключить стороннии скрипты повле выполнения аякс-запроса.
Всем привет.В шаблоне три блока.В зависимости от условий(заданны и передаются с сервера) аяксом подгружается тот или иной див.Например при условии if(album = 1) подгружается третий блок
$.post(url)
.done(function( data ) {
$('#cont').html(data);
}
При этом нужно в этом блоке подключить js файл.Правильно ли использовать
$.getScript("/js/script.js");
и в какое место его правильно будет прописать? |
Сделал так
$(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);
}
});
}
Но как то криво работает.Нет-нет, да зависнет или криво сработает. |
может скрипты надо грузить после html
$('#cont').html(data);
$.getScript(scr);
$.getScript(scr2);
|
ureech, history.pushState успешно и без сбоев работает после window.onload
При $(document).ready(function() { - может подглючивать Несколько скриптов лучше подгружать с интервалом(посколь при ассинхронке, второй может загрузиться ранее первого
23 $.getScript(scr);
24 setTimeout(function() { $.getScript(scr2);},400);
Или просто объединить их в единый скрипт и подгружать единственный |
$.getScript(scr) таким образом загруженный скрипт не кешируется. если скрипт постоянный то может
var el = document.createElement('script');
el.src = 'you path src';
document.body.appendChild(el);
данный вариант будет кешировать скрипт на клиенте и файл будет взят из кеша |
| Часовой пояс GMT +3, время: 12:26. |