@protasovmikhail

Как сначала загрузить методом ajax, а потом лишь вставить в DOM?

День добрый.
Возникла проблема: загружаю методом .load контент и все бы ничего, но стили к нему подключаются заметно позже. Т.е. появляется некоторая задержка - элементы без стиля выстраиваются и через мгновение, обретают позицию, цвет итд..

Вопрос как мне сначала загрузить, а потом вставить в DOM. Я в js не силен, но мне думается что - загрузить в переменную, а потом присвоить div'у значение этой переменной. Но вот реализовать я это не могу(

Не прошу все написать за меня, только - как загрузить в переменную( может var = .load(url) ) и как заменить ее содержимым содержимое div'a.

Спасибо.
  • Вопрос задан
  • 2998 просмотров
Решения вопроса 1
@protasovmikhail Автор вопроса
В общем мне подошел метод .append().

Всем кто задастся этим же вопросом - feo-klunker.blogspot.com/2013/04/css-jquery.html
там я и нашел) вот только скрипты им грузить... пока не получилось)

У кого тоже не получилось так грузить скрипт - В чем может быть причина отказа от работы js скрипта?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
$.ajax({
                url: '/index.php',
                data: {
                       // отправляемые данные типа name: value
                },  
                success: function (data){ 
                      $('div').html(data); 
                }
            });
Ответ написан
viktorvsk
@viktorvsk
У Вас не загрузились стили, а код уже выполняется?
Тогда самый простой вариант, весь код запускать в
$(document).ready(function(){ $("#div").load('/url'); });
Ответ написан
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
При таком варианте попробуйте iframe, либо же через load загружать только нужный html код, а стили загружать в исходном документе, либо же использовать inline стили.
Ответ написан
Это называется FOUC (Flash Of Unstyled Content), решается любым методом, из общих (пишу для понимания принципов):
1. В самом html файле в head прописать style: * { visibility: hidden; }, т.е. все скрываем, а в самом css файле, пишем * { visibility: visible; }, тогда все элементы после загрузки html будут невидимы, но как только css загрузится и "заведется" все встанет на свои места
2. у body пишем класс body.no-css, аналогично пишем в head прописать style: body.no-css { display: none; } , потом по факту загрузки DOM снять с body класс no-css

ИМХО, подгружать контент страницы после загрузки DOM ajax запросом - это увеличение времени ожидания страницы, что зло. Динамически подгружать второстепенные элементы, чтобы ускорить время доступности основного контента со стилями - хорошо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы