Помощник
|
Задержка скрипта аналогично алерту |
Alcorn
|
Сообщение
#1
|
||
|
|
||
|
|||
Nightfly_hb |
17.7.2009, 14:13;
Ответить: Nightfly_hb
Сообщение
#2
|
|
[PHP]sleep[/PHP] или[PHP]set_time_limit[/PHP]пробовали?
|
|
|
Alcorn
|
Сообщение
#3
|
|
С серверной задержкой внешний результат такой же как и с клиентским циклом, пока задержка не кончится, клиенту страница не передаётся. А после того, как она полностью передалась и без задержек прорисовалась в браузере, теряется весь смысл. Возможно на сервере можно настроить, чтоб страница выдавалась не целиком, а по частям, пока не знаю.
Проще наверное оставить всё как есть. |
|
|
Galen |
17.7.2009, 17:30;
Ответить: Galen
Сообщение
#4
|
|
Читал, что jQuery может что-то похожее - точный линк дать, к сожалению, не могу.
А вообще проще, в начало документа вставить основной контент, а потом всё остальное - так сказать естественная поэтапная загрузка и показ. |
|
|
Alcorn
|
Сообщение
#5
|
|
Почти все данные на страницу загружаются из базы, включая пути к рисункам. Javascript видимо не может правильно работать на таких страницах, ему нужен полностью статический вариант. Как результат - куча непонятных ошибок. Тот же самый файл, но статический вариант, отрабатывает без проблем.
В основном ошибки в том, что при такой загрузке javascript не может правильно определить размеры элементов и положение их на странице. Раньше долго мучился и потом пришёл к выводу - как можно меньше использовать javascript на таких страницах. А если ещё к этому добавить relative и absolute, там вообще мистика наступает. Ладно, вернёмся к проблеме. ....грузим из базы контент.... ....вызываем функцию.... ....конец страницы.... Вызываем функцию и магическим образом во всех загруженных из базы элементах пропадают маргины(и паддинги в том числе, но я их не использовал тут). Решил провести эксперимент, закомментировать вызов функции. Всё хорошо красиво вывелось на страницу. Вывод - причина в функции. Эксперимент номер два. ....грузим из базы контент.... ....измеряем offsetTop выводимых элементов и пишем в массив.... ....вызываем функцию.... ....смотрим алертом старый и новый offsetTop.... ....конец страницы.... Перед вызовом функции, offsetTop должен быть 127px благодаря маргину в 15px. После вызова функции, когда всё по непонятной причине сбрасывается в ноль, offsetTop должен стать 113px(один пиксель правда потерялся). К удивлению offsetTop получился равным 113px и до и после вызова функции. Функция ещё не начала выполняться, а маргинов уже нет. Если же убрать функцию, то маргины есть. Мистика. Функция каким-то магическим образом прыгает по всей странице, недавая измерить правильный offsetTop :). Ну и третий вариант: ....грузим из базы контент.... ....вставляем alert.... ....вызываем функцию.... ....конец страницы.... В этом случае всё отработало как надо. Есть предположение, что надо вставить задержку, имитирующую alert, но без окна и с управлением времени. Чуть не забыл - при обновлении страницы, элементы выстраиваются правильно, т.е. если страница берётся статической из кэша, то построена она верно, лишь при первой загрузке такая проблема. Пока вот думаю каким ещё способом можно обойти проблему. Посмотрю сейчас в сторону её обновления после загрузки. Кстати, а можно её не обнавляя с сервера, просто вытащить из кэша клиента? P.S. Этой проблемы в IE6 нет, там повидимому построение страницы происходит по иному принципу. |
|
|
Witu |
18.7.2009, 7:58;
Ответить: Witu
Сообщение
#6
|
|
Alcorn, может как вариант использовать ajax и при полной загрузке странички с его помощью подгружать остальное?
|
|
|
Alcorn
|
Сообщение
#7
|
|
Ajax как минимум несколько секунд потеряет. Загрузится страница, потом через несколько секунд раз и перестроилась. Со стороны довольно интересно будет выглядеть.
Асинхронно к тому же неполучится, так как при превышении какого-то интервала времени немецкий скрипт вываливается и при этом падает сам javascript браузера(перестают работать функции языка). Отказ от setTimeout как раз из-за этого. Подключение библиотеки js перенёс из начала страницы прям к вызову самой функуции. Удалось выйграть немного времени. FF, Safari, IE теперь с первого прохода распознают правильность расположения элементов. Но быстрая Опера проскакивает, там по прежнему маргины и паддинги сбрасываются в ноль. Ещё бы немного задержки и возможно Опера нормально построит страницу. Не знаю что немцы намудрили в своей библиотеке, но эти глюки уже начинают надоедать... Попробую ещё чем-нибудь приостановить. |
|
|
Alcorn
|
Сообщение
#8
|
|
Только что проверил на одном из компьютеров, для Оперы понадобилась вот такая задержка:
for (i=0; i<1400000;i++) { x='x'; }; Завтра попробую на других компьютерах, если сработает, то оставлю так. |
|
|
Apay |
19.7.2009, 10:57;
Ответить: Apay
Сообщение
#9
|
|
то что требуется выполнить после задержки выделить в отдельную ф-ю и использовать setTimeout для задержки.
|
|
|
Alcorn
|
Сообщение
#10
|
|
setTimeout и setInterval - первое о чём я подумал, но после них ещё хуже, просто всё виснет. Картина примерно такая: страница загрузилась, через 2 секунды по setInterval вызывается функция, страница полностью очищается и виснет. Почему так происходит - не знаю, функцию и библиотеку весом в 40кб писал не я. Я лишь наблюдаю последствия её действий и пытаюсь как-то подстроиться под неё.
Браузеры сейчас проходят нормально, только на Оперу потребовалась задержка. Если время будет, попытаюсь разобрать страницу по частям, может ещё какой-нибудь выход найдётся. Единственное смущает один вопрос - почему при обновлении страница проходит ровно? Понятно, что она сохраняется в кэше и часть берётся оттуда, но если она кривая, то и выводилась бы криво, так нет же, ровно всё. Никаких ошибок в js браузеры не показывают. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Требуется разработка скрипта для интернет-магазин автоматической покупки игр с сайта Xbox | 2 | slavalist | 732 | 10.1.2023, 3:09 автор: slavalist |
|
Срочно нужен прогер по WordPress для доработки скрипта | 1 | kolyas | 1634 | 5.5.2020, 12:09 автор: kolyas |
|
Продажа Скрипта Flip-Cash | 0 | ilyaz1110 | 2532 | 19.4.2020, 14:04 автор: ilyaz1110 |
|
Продажа скрипта рекламной сети Push уведомлений | 5 | inpushpro | 3428 | 22.3.2020, 1:50 автор: inpushpro |
|
Продажа скрипта рекламной сети Push уведомлений | 9 | inpushpro | 2835 | 22.3.2020, 1:38 автор: inpushpro |
Текстовая версия | Сейчас: 29.3.2024, 13:23 |