Новый вопрос по интеграции контента в сайт (+)

simplyAl

Guest
Новый вопрос по интеграции контента в сайт (+)

Необходимо интегрировать хтмл текст с одного сайта в другой - что-то типа хтмл баннеров. Таких баннеров, подгружающих инфу с удаленного сервера на одной странице будет больше 10.

Можно подгружать контент через JavaScript src="index.php"
или через iframе.

дак вот проблема в том, что:

JavaScript
Броузер приостанавливает загрузку стараницы до тех пор пока не загрузит содержимое src. Т.е. если в index.php написать sleep(60), то хтмл страница в которую интегрируется контент будет грузиться 60*10=600 секунд:) Броузер будет ждать ответа от всех копий 10nb JavaScript src="index.php" перед тем как отобразить страницу юзеру.

iframе
В этом случае броузер сразу делает 10 iframе'ов и сразу отображает страницу пользователю, только ПОТОМ подгружается содержимое iframe'ов. И все бы хорошо, но тут возникает другая пробелема: поскольку у меня интегрируется хтмл баннер, я не могу наперед знать его высоту. Если можно в параметрах тега iframe выставить width=100% и решить вопрос с шириной, то с высотой я не знаю что придумать (скролинга быть не должно).

Итак, вопрос:

Как сделать так, чтобы можно было подгружать инфу с удаленного сервера внутрь хтмл страницы при этом:
1) не замедляя отдачу самой страницы юзеру
2) отталкиваться от того, что подгружаемый контент может быть переменной длины.

PS: есть еще варинт работы через тэг OBJECT, но пробема та же что и в iframe - как выставлять высоту и ширину объекта?
 

Ramzes

Новичок
имхо
1. асинхронный http request с помощью XMLHttpRequest
2. либо показывать весь контент, либо как-то ограничить через css clip
 

simplyAl

Guest
Ramzes
Имеете ввиду через яваскрипт?
1) Все ли броузеры это поддерживают?
2) О чем речь?

объясните поподробней плз.
 

simplyAl

Guest
1) смотрю...
2) CSSка с настройками клипа должно быть определена странице-родителе, или в той которая подгружается в iframe?

а есть ли еще какие-то варианты решения подобной проблемы с подгрузкой контента?
 

Ramzes

Новичок
1. в качестве альтернативы XMLHttpRequest можно использовать явааплет(не помню как называется), но тогда на машине клиента должна быть java
2. это контейнер, он по определению на странице-родителе :)
 

SelenIT

IT-лунатик :)
Имхо, можно еще грузить Java-Script'ы в невидимых iframe-ах, а уже оттуда скриптом же "дорисовывать" основную страницу.
 

simplyAl

Guest
SelenIT
в смысле, сначала грузить iframe'ы в которых будут ява-скрипты?

а насколько сильно вообще будет тормозить страница с 10ю iframe'ами, пусть даже невидимыми и практически пустыми в плане контента?
 

SelenIT

IT-лунатик :)
Собственно, даже iframe-ы не обязательны - можно просто перенести внешние скрипты в конец документа, и дорисовывать страницу не с помощью document.write, а через innerHTML заранее подготовленных контейнеров, например div-ов (по умолчанию пустых). Сами скрипты будут тормозить так же, как и сейчас. Но прежде, чем они начнут это делать, юзер уже получит весь остальной контент страницы :)

Должно работать в ie4+, mozilla 0.9+, opera 7.0+.
 

simplyAl

Guest
SelenIT
Это действительно вариант!
Можете ткнуть носом на пару манов конкретно по этой теме (заполнение контейнеров через innerHTML), т.к. возникает куча вопросов типа:

1) Что в таком случае должно быть внутри подгружаемых скриптов в плане кода? Я так понимаю не document.write(), а что-то другое?

2) Как подгружаемый скрипт узнает какой контейнер ему заполнять в родителе? передавать id контейнера в URL запроса?

3) Могут ли потенциально возникнуть какие-то проблемы с визуальным оформлением возвращаемого контента?

В Яве я оцень слабо разбираюсь, могу только писать простые скрипты "по образцу":(...
 

SelenIT

IT-лунатик :)
1) document.getElementById('id_контейнера').innerHTML = 'нужный HTML-код в одну строку';
2) Разве все 10 подгружаемых скриптов - экземпляры одного скрипта? Мне казалось, что заранее известно, что куда пойдет, и нужный id будет раз и навсегда прописан в соотв. коде. Но брать из URL тоже можно.
3) К сожалению, могут. Как минимум - "дергание" наподобие того, что бывает при подгрузке картинок без указания их размеров в коде. В худшем случае - налезание элементов друг на друга. Нужно тестировать и при необходимости править CSS.
 

simplyAl

Guest
1) понял
2) сам скрипт один, к немуделается 10 запросов с разными параметрами и он возвращает 10 разных овтетов. Можно передавать через URL, это решение в прицнипе.
3) проявление этих багов зависит от того как сделаен "сайт-родитель"? Я не имею возможности отслеживать у кого что написано в CSS:( а тем более просить владельцев сайтов подправить сайт под мои "баннеры" :)...
 

Ramzes

Новичок
SelenIT
весьма оригинальный вариант, наверное нужно поведать о нем создателям Google mail, они бедные и не догадывались :)
ну а если серьезно, то какой в этом толк кроме ге*роя с фреймами?
 

SelenIT

IT-лунатик :)
Ramzes
в последнем варианте фреймы не упоминаются, первый раз, согласен, я перемудрил. Толку в этом ИМХО примерно столько же, сколько в исходной задаче. Тут же не ajax в чистом виде, а простое управление очередностью загрузки при однократном запросе...
 

simplyAl

Guest
SelenIT
Дописал только что систему, работающую по принципу, который Вы предложили.

Грузится все замечательно, скроллится тоже. Похоже, проблема решена.

Спасибо!
 
Сверху