Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2009, 23:07
Новичок на форуме
Отправить личное сообщение для guelder Посмотреть профиль Найти все сообщения от guelder
 
Регистрация: 21.07.2009
Сообщений: 5

подгрузка контента
Всем доброго времени суток.

У меня проблемка небольшая. Делаю страничку, в которой в перспективе будут отображаться примеры верстки. Ничего сложного на первом этапе. Что мы имеем на сегодняшний день можно посмотреть тут:
http://ingolstadt-kosmetik.de/test/js/frame.html
Файлы подгружаются функцией load, но, как я понял, она, подгрузив семантику, считает работу законченной и передает управление функции, указанной как параметр. Проблема в том, что картинки и файлы стилей к тому моменту еще не подгружены, что мешает достойно отобразить информацию. Дергания заметны. Пытался запоминать старые размеры окна и затем менять их на новые, исходя из подгруженных данных, но это затруднительно, так как сначала передаются размеры окна, какое бы оно было бы, если бы файлы стилей еще не были подгружены. Позднее, когда все уже загружено и закешировано, все нормально, но меня это не устраивает. Первое впечатление портит все. Можно ли как-нибудь заставить функцию load передавать управление только тогда, когда подгружаемые данные загружены полностью, со всеми картинками, файлами стилей и другими включениями? Или, может быть, уже существует готовый механизм решения поставленной мною задачи, а я тут велосипед изобретаю. Буду рад, если поделитесь навыками. Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2009, 13:10
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Если сильно мешает, можно накрыть область подгрузки, и убрать накрытие после загрузки всех внешний данных ака css и рисунков
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2009, 15:51
Новичок на форуме
Отправить личное сообщение для guelder Посмотреть профиль Найти все сообщения от guelder
 
Регистрация: 21.07.2009
Сообщений: 5

Мешает. В принципе, определенные проблемы это решает но не все. Высота блока, в который подгружается контент все еще возвращается без учета разметки в файле стилей. Причем в эксплорере все работает как надо, что удивительно. Хотя тут палка о двух концах. Но не суть. Неужели нигде нет флажка какого-нить, где выставляется критерий окончания загрузки - или только семантика или полностью страница со всем включениями? Было бы полезно.
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2009, 14:11
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Вы грузите html, содержащий ссылку на внешний css?!
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2009, 14:29
Новичок на форуме
Отправить личное сообщение для guelder Посмотреть профиль Найти все сообщения от guelder
 
Регистрация: 21.07.2009
Сообщений: 5

Дело в том, что у меня уже есть определенный набор сверстанных страничек. Многие классы и идентификаторы у них пересекаются. Я, может быть, не вижу очевидного, но с высоты моих знаний я не знаю, как сделать по-другому. Я просто загружаю полностью html в блок. Со всеми заголовками, определениями и включениями. Нутром чую, что там каша какая-то получается, но все работает, как ни странно. Как вариант, который мне приходит в голову - уникально определить все классы и идентификаторы в каждой сверстанной страничке, забить ихв один css файл и загрузить его где-нить в самом начале. А в подгужаемых файлах оставить только обгрызанный html, в котором будет только блок, содержащий непосредственно верстку. Но это было бы неудобно. Потому что непонятно, сколько у меня появится примеров верстки в дальнейшем. Либо опять же, как вариант, загружать с основной страницей файлы стилей для всех версток. В этом случае они будут закешированы в браузере пользователя с самого начала и дальнейшие проблемы отпадают сами собой. Хотя, с другой стороны, если версток будет несколько десятков или, не дай бог, сотен, зачем пользователю такой объем данных за раз, если он захочет посмотреть, от силы пару-тройку примеров? Хочется найти оптимальный вариант, но, к сожалению, не знаю всех доступных в инструментарии jquery или javascript возможностей.
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2009, 15:13
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Да, грузить весь css никак нельзя. Как вариант - грузим html, затем грузим css аяксом. Когда css загружен - создаём style в head и пихаем туда наш css. Когда всё сделали, вставляем html в div с visibility:hidden;. Теперь мы можем точно знать размеры полученного html

ЗЫ: Сам так не делал, но проблем в такой реализации не вижу
Ответить с цитированием
  #7 (permalink)  
Старый 28.07.2009, 13:28
Новичок на форуме
Отправить личное сообщение для guelder Посмотреть профиль Найти все сообщения от guelder
 
Регистрация: 21.07.2009
Сообщений: 5

B~Vladi,
алгоритм супер, мне нравится. Только я никак не могу понять, как с помощью фреймворка скачать файл стилей. Все выходные проторчал за книжкой, прочитал кучу сообщений на блогах, нашел вариант, как отследить окончание загрузки изображений, но по аналогии не получается, потому что там событие вешается на событие "load" тега "img". Тут такое не прокатывает. И как работать с этим скаченным файлом? Где он сохраняется? Может быть, вопросы слегка наивные, но это то, чего я в данный момент не понимаю. Если в голову приходит какая-нибудь литература на эту тему - было бы тоже неплохо.
Ответить с цитированием
  #8 (permalink)  
Старый 28.07.2009, 13:57
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Вобщем, как получить css с помощью фреймворка зависит от конкретного фрейворка. Копать в мануалах к нему нужно по слову ajax. Либо вы даёте прямую ссылку на css и получаете код этого файла, либо на файл php с параметрами и в нём уже выводите нужный css через file_get_contents. В ответе получите css-код, который будет хранится в памяти (как и обычные переменные). Далее находим тег head в вашем html через document.documentElement и создаём в нём тег style.
Далее создаём textNode, вставляем в него полученный css-код как данные, т.е. для Gecko используем appendData, а для IE .data. Делаем appendChild в тег style полученную ноду

Последний раз редактировалось B~Vladi, 28.07.2009 в 14:02.
Ответить с цитированием
  #9 (permalink)  
Старый 28.07.2009, 14:04
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Ой... мы же в ветке jQuery... Вобщем там есть метод load и ajax... Я сам с ним не сильно знаком... Здесь есть люди, которые по этому вопросу смогут больше сказать.
Ответить с цитированием
  #10 (permalink)  
Старый 29.07.2009, 15:33
Новичок на форуме
Отправить личное сообщение для guelder Посмотреть профиль Найти все сообщения от guelder
 
Регистрация: 21.07.2009
Сообщений: 5

B~Vladi,
Респектище. Все получилось, на результат не нарадуюсь. Фреймворк у меня jQuery, собственно, поэтому в этой ветке форума и пишу. Спасибо огромное за помощь!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузка элемента из div через Appendto Vitaly jQuery 5 24.06.2009 10:54
Динамическая подгрузка JScript Yustas Общие вопросы Javascript 0 04.05.2009 16:31
Подгрузка изображений по клику CompModdd Общие вопросы Javascript 17 30.04.2009 02:39
Подгрузка информера без перезагрузки страницы splean Общие вопросы Javascript 6 13.03.2009 15:31
Ajax. Полноценная подгрузка страниц, содержащих CSS и JS. Alex22 AJAX и COMET 6 05.11.2008 23:53