X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Задержка скрипта аналогично алерту
Alcorn
Alcorn
Topic Starter сообщение 17.7.2009, 13:13; Ответить: Alcorn
Сообщение #1


Нужно задержать выполнение страницы(скрипта в её середине) примерно на секунду. Потом время точнее определю.
Сделать всё нужно аналогично alert, т.е. тот же самый алерт, но без окна и с автоматическим продолжением через заданное время.

1) Пробовал задержку делать циклом. Браузер виснет, страница не прорисовывается пока не выполнится цикл. Такой вариант отпадает.

2) Пробовал через setTimeout и setInterval. Вместо остановки, страница продолжает выполнятся дальше. Тоже неподходит.

Какие ещё есть варианты?

Общая структура такова:
Грузим страницу, доходим до процедуры задержки, прорисовываем загруженную часть страницы, после того, как она прорисовалась, выполняем загрузку/показ страницы дальше.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Nightfly_hb
Nightfly_hb
сообщение 17.7.2009, 14:13; Ответить: Nightfly_hb
Сообщение #2


[PHP]sleep[/PHP] или[PHP]set_time_limit[/PHP]пробовали?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
Topic Starter сообщение 17.7.2009, 15:23; Ответить: Alcorn
Сообщение #3


С серверной задержкой внешний результат такой же как и с клиентским циклом, пока задержка не кончится, клиенту страница не передаётся. А после того, как она полностью передалась и без задержек прорисовалась в браузере, теряется весь смысл. Возможно на сервере можно настроить, чтоб страница выдавалась не целиком, а по частям, пока не знаю.
Проще наверное оставить всё как есть.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 17.7.2009, 17:30; Ответить: Galen
Сообщение #4


Читал, что jQuery может что-то похожее - точный линк дать, к сожалению, не могу.
А вообще проще, в начало документа вставить основной контент, а потом всё остальное - так сказать естественная поэтапная загрузка и показ.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
Topic Starter сообщение 18.7.2009, 6:11; Ответить: Alcorn
Сообщение #5


Почти все данные на страницу загружаются из базы, включая пути к рисункам. Javascript видимо не может правильно работать на таких страницах, ему нужен полностью статический вариант. Как результат - куча непонятных ошибок. Тот же самый файл, но статический вариант, отрабатывает без проблем.
В основном ошибки в том, что при такой загрузке javascript не может правильно определить размеры элементов и положение их на странице. Раньше долго мучился и потом пришёл к выводу - как можно меньше использовать javascript на таких страницах. А если ещё к этому добавить relative и absolute, там вообще мистика наступает.

Ладно, вернёмся к проблеме.
....грузим из базы контент....
....вызываем функцию....
....конец страницы....

Вызываем функцию и магическим образом во всех загруженных из базы элементах пропадают маргины(и паддинги в том числе, но я их не использовал тут).
Решил провести эксперимент, закомментировать вызов функции. Всё хорошо красиво вывелось на страницу. Вывод - причина в функции.

Эксперимент номер два.
....грузим из базы контент....
....измеряем offsetTop выводимых элементов и пишем в массив....
....вызываем функцию....
....смотрим алертом старый и новый offsetTop....
....конец страницы....

Перед вызовом функции, offsetTop должен быть 127px благодаря маргину в 15px.
После вызова функции, когда всё по непонятной причине сбрасывается в ноль, offsetTop должен стать 113px(один пиксель правда потерялся).
К удивлению offsetTop получился равным 113px и до и после вызова функции.
Функция ещё не начала выполняться, а маргинов уже нет. Если же убрать функцию, то маргины есть. Мистика.
Функция каким-то магическим образом прыгает по всей странице, недавая измерить правильный offsetTop :).

Ну и третий вариант:
....грузим из базы контент....
....вставляем alert....
....вызываем функцию....
....конец страницы....

В этом случае всё отработало как надо. Есть предположение, что надо вставить задержку, имитирующую alert, но без окна и с управлением времени.

Чуть не забыл - при обновлении страницы, элементы выстраиваются правильно, т.е. если страница берётся статической из кэша, то построена она верно, лишь при первой загрузке такая проблема.

Пока вот думаю каким ещё способом можно обойти проблему.
Посмотрю сейчас в сторону её обновления после загрузки.
Кстати, а можно её не обнавляя с сервера, просто вытащить из кэша клиента?

P.S. Этой проблемы в IE6 нет, там повидимому построение страницы происходит по иному принципу.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 18.7.2009, 7:58; Ответить: Witu
Сообщение #6


Alcorn, может как вариант использовать ajax и при полной загрузке странички с его помощью подгружать остальное?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
Topic Starter сообщение 18.7.2009, 15:50; Ответить: Alcorn
Сообщение #7


Ajax как минимум несколько секунд потеряет. Загрузится страница, потом через несколько секунд раз и перестроилась. Со стороны довольно интересно будет выглядеть.

Асинхронно к тому же неполучится, так как при превышении какого-то интервала времени немецкий скрипт вываливается и при этом падает сам javascript браузера(перестают работать функции языка). Отказ от setTimeout как раз из-за этого.

Подключение библиотеки js перенёс из начала страницы прям к вызову самой функуции. Удалось выйграть немного времени. FF, Safari, IE теперь с первого прохода распознают правильность расположения элементов. Но быстрая Опера проскакивает, там по прежнему маргины и паддинги сбрасываются в ноль.

Ещё бы немного задержки и возможно Опера нормально построит страницу.

Не знаю что немцы намудрили в своей библиотеке, но эти глюки уже начинают надоедать...

Попробую ещё чем-нибудь приостановить.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
Topic Starter сообщение 18.7.2009, 16:19; Ответить: Alcorn
Сообщение #8


Только что проверил на одном из компьютеров, для Оперы понадобилась вот такая задержка:
for (i=0; i<1400000;i++) { x='x'; };


Завтра попробую на других компьютерах, если сработает, то оставлю так.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 19.7.2009, 10:57; Ответить: Apay
Сообщение #9


то что требуется выполнить после задержки выделить в отдельную ф-ю и использовать setTimeout для задержки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alcorn
Alcorn
Topic Starter сообщение 19.7.2009, 11:59; Ответить: Alcorn
Сообщение #10


setTimeout и setInterval - первое о чём я подумал, но после них ещё хуже, просто всё виснет. Картина примерно такая: страница загрузилась, через 2 секунды по setInterval вызывается функция, страница полностью очищается и виснет. Почему так происходит - не знаю, функцию и библиотеку весом в 40кб писал не я. Я лишь наблюдаю последствия её действий и пытаюсь как-то подстроиться под неё.

Браузеры сейчас проходят нормально, только на Оперу потребовалась задержка.

Если время будет, попытаюсь разобрать страницу по частям, может ещё какой-нибудь выход найдётся.

Единственное смущает один вопрос - почему при обновлении страница проходит ровно? Понятно, что она сохраняется в кэше и часть берётся оттуда, но если она кривая, то и выводилась бы криво, так нет же, ровно всё. Никаких ошибок в js браузеры не показывают.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Требуется разработка скрипта для интернет-магазин автоматической покупки игр с сайта 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


 



RSS Текстовая версия Сейчас: 29.3.2024, 13:23
Дизайн