Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подгрузка содержимого внешних файлов в слой DIV
 
 автор: Umnik   (29.12.2007 в 10:40)   письмо автору
 
 

Перелистал добрую сотню тем на форуме и ничего похожего не нашёл
Потому и пишу, надеясь на помощь профиков...

Есть каркас сайта с резиновой вёрствой (смесь технологий, в т.ч. и PHP, хотя мне кажется это не важно). Большую часть экрана занимает слой-контейнер DIV id="content", ñсодержимое которого должно динамически подгружаться при каждом переходе по ссылке. В идеале сайт состоит из одной-единственной страницы, в которую из БД или файлов xml выбираются необходимые порции информации, обрабатываемые на лету PHP или XSLT.

код с использованием .innerHTML для DIV id="content" на JS, который я уже как только не пробовал приспосабливать не во всех браузерах работает, а если приходится генерировать элементы с поведением, то оно на выходе вообще отсутствует

Подскажите кто знает, как при щелчке по кнопке безо всяких переходов страниц данные из xml выбирались, трансформировались и выводились в этот контейнёр уже в нужном виде

   
 
 автор: Drago   (29.12.2007 в 11:28)   письмо автору
 
   для: Umnik   (29.12.2007 в 10:40)
 

Почитайте про AJAX.

   
 
 автор: CNT   (29.12.2007 в 12:20)   письмо автору
 
   для: Umnik   (29.12.2007 в 10:40)
 

Это в каком именно браузере у вас innerHTML не работает?

Если вы про очень древние версии (ниже 5-х в MSIE, NC и Opera), то никакой AJAX вам там не поможет.
Ибо посредством AJAX вы сможете получить информацию в браузер от сервера, а вот вывести её в тот же документ (не разрушая его полностью) - только DOM-методами, включая innerHTML.
Если только в новый документ - что-то типа IFRAME, помещенного на странице - там вы можете оперировать методом write, переписывая весь документ в IFRAME.

   
 
 автор: Umnik   (31.12.2007 в 17:03)   письмо автору
 
   для: CNT   (29.12.2007 в 12:20)
 

Немножко отвечу, немножко поясню:
Я хорошо знаю XSLT и поэтому таблицу скажем Контактов предпочитаю хранить в 2 файлах contacts.xml и contacts.xsl. С первым из них запросто работаю не только я, но и человек, отвечающий за эту информацию, а второй только для меня (в нём логика обработки и он заметно меньше). И это в разы удобнее и практичнее, чем читать бесконечные строки типа <tr><td>...</td><tr>
Так вот, при использовании метода load() объекта document все учебники хором советуют использовать "new ActiveXObject("Microsoft.XMLDOM");" что актуально только для пользователей IE для Windows (данные же читаются из реестра). А как же все остальные? Чем они хуже? Но даже если я делаю всё как описано в учебниках у меня в этот слой прогружается и формируется таблица, но щелчки на определённых строчках этой таблицы не обрабатываются! (а по задумке при щелчке по названию группы должны раскрываться подгруппы, а все остальные соседние группы сворачиваться). Добавим к этому назойливое предупреждение о возможном нарушении безопасности, которое как ни старайся не отключается и очень раздражает
С Оперой ситуация ещё хуже, хотя как раз под неё и стоит делать, потому что она точнее всех остальных соответствует стандарту W3C. Чистый .innerHTML не позволяет писать туда содержимое, нуждающееся в дальнейшей трансформации и передавать всё приходится разделами CDATA. Что касается IFRAME, то насколько мне известно, его содержимое не индексируется поисковыми машинами и при включеной в браузере настройке "не отображать IFRAME" посетитель его просто не увидит

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

   
 
 автор: sim5   (31.12.2007 в 17:13)   письмо автору
 
   для: Umnik   (31.12.2007 в 17:03)
 

Не надо никакой Java машины. И вообще, получайте во фрейм и его содержимое помещайте в DIV, но вот насчет индексации...

<DIV ID="dv"></DIV>
<IFRAME SRC="file.html" ID="dc" onLoad="window.document.getElementById('dv').innerHTML= dc.document.body.innerHTML;" 
 frameborder="0" width="0" height="0" id="dc"></IFRAME>

   
 
 автор: Umnik   (09.01.2008 в 09:00)   письмо автору
 
   для: sim5   (31.12.2007 в 17:13)
 

Спасибо за совет, я примерно так уже пробовал
Только вот если IFRAME`ы отключены, то в странице получится дырка
да и DIV тогда совсем не нужен - можно всё отображать самим IFRAME`ом

   
 
 автор: sim5   (09.01.2008 в 09:04)   письмо автору
 
   для: Umnik   (09.01.2008 в 09:00)
 

Отображайте.

   
 
 автор: coloboc66   (31.12.2007 в 19:10)   письмо автору
 
   для: Umnik   (31.12.2007 в 17:03)
 

...ActiveXObject("Microsoft.XMLDOM");" что актуально только для пользователей IE для Windows ... Опера и Лиса тоже прекрасно понимают.
... для выполнения его нужна виртуальная машина JAVA, а её не каждый хостер даёт... - что-то вы здесь загнули??? JVM ставится и работает на клиентском компьютере, причём тут хостер вообще?
А аякс к яве не имеет совсем никакого отношения.

   
 
 автор: bronenos   (31.12.2007 в 19:18)   письмо автору
 
   для: coloboc66   (31.12.2007 в 19:10)
 

Про AJAX я много раз слышал, но сам ещё не сталкивался.
а чего еще ожидать

   
 
 автор: Umnik   (09.01.2008 в 09:19)   письмо автору
 
   для: coloboc66   (31.12.2007 в 19:10)
 

...я писал про пользователей "неWindows"...
ну да ладно
а вот если сервер не обработает JAVA-код или этот код вообще написан на JS, то он конечно будет передан на клиентский компьютер, чего как раз не хотелось бы. Во-первых, результат выполнения кода на каждой машине может выглядеть по-разному, из-за активности антивируса или защитных программ часть кода может не сработать вообще
Смысл-то как раз в том, что по запросу юзера сервер формирует страницу и отсылает юзеру уже в плоском виде HTML-страницы, не предполагающем никакой обработки. Тогда можно точно предположить результат отображения
а здесь получается, что я должен сперва прогрузить на клиента пару xml-файлов (=исходников с логикой), пару js, а потом с помощью этой новой модной технологии AJAX запустить трансформацию, которая будет во многом зависеть от браузера
А как насчёт скорости всего этого? Ведь при нажатии на кнопку всё-равно будет работать сообщение клиент-сервер, да плюс ещё и AJAX

   
 
 автор: Umnik   (09.01.2008 в 09:26)   письмо автору
 
   для: coloboc66   (31.12.2007 в 19:10)
 

спасибо, я знаю, что JVM выполняется на клиенте, мне она вообще не нужна
речь шла про выделенный сервлет-контейнер сервера, Tomcat например, позволяющий выполнять java-байткод прямо из страницы html (а точнее xml)
а если аякс написан на js и позволяет управлять только js, то мне он тогда не интересен
обработать щелчок мышой можно и без аякса, а вот всё остальное я хочу заставить делать именно сервер!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования