Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Изменение содержимого сразу двух фреймов |
Автор: Vitalik 3.8.2007, 19:33 | ||||
Собственно проблема следующая. Как мне кажется у нее должно быть какое-то банальное правильное решение, оно обязательно должно существовать.. Был обычный безфреймовый сайт. Слева табличка со ссылками. Нужно было его переделать на фреймы. Уже почти все готово, но не совсем.. Значится, у нас есть два фрейма (на самом деле три, трейтий вверху, но это не принципиально). Ситуация вполне обычная и стандартная: есть один фрейм - основной (в нем отображается текущее содержимое) и второй фрейм - дополнительный (в нем отображается менюшка, которая меняется в зависимости от содержимого основного фрейма). Я долго думал, где бы мне задать вопрос об этом.. Форум "Вёрстка веб-сайтов" отпал, так как здесь скорее всего проблему невозможно решить только с помощью голого HTML. Думал потом создать ее в "JavaScript: Общие вопросы", но дело в том, что я и так знаю, как с помощью JavaScript изменить содержимое фрейма (кажется так: имя_фрейма.location.href = 'новый url'). Тут проблема несколько "ширше".. Нужно не просто сделать "рядовую" ссылочку, меняющую содержимое двух фреймов. Хотелось бы, чтобы href у всех ссылок остался прежний, и никаких onclick по возможности не добавилось, просто у ссылок в дополнительном фрейме появляется target на основной фрейм, а все остальные ссылки остались бы вообще без изменений. В принципе может и ничего страшного не было бы, если бы добавить к каждой ссылочке какую-то ерунду, но ведь тогда и перелопачивать все файлы проекта придется, и страничка станет больше и неуклюжей.. Вобщем этого бы очень не хотелось.. Пока что я сделал следующим образом, но решение очень плохое получилось, весьма неудачное.. В заголовок каждой страницы я добавил:
В файле index.php для каждого параметра action просто напросто идет такой код:
И все хорошо, все замечательно.. Если бы не несколько "но".. Во-первых, этот навигатор (то есть менюшка в дополнительном фрейме) обновляется только тогда, когда полностью обновится страница в основном фрейме. А это ведь бывает до нескольких секунд приходится ждать и как-то не эстетично получается, когда вот уже видна загрузка новой страницы, а дополнительный фрейм содержит старую менюшку.. Во-вторых, очень неприятно, что история посещения содержит в два раза больше элементов.. То есть чтобы попасть на прошлую страницу нужно два раза щелкнуть по кнопке "Назад" (один раз для обновления навигатора, один раз для основного содержимого). Это очень-очень неудобно.. Если для решения этой проблемы нужен только JS, то можете перемещать эту тему туда.. ![]() Просто я подумал, что может вдруг придется и серверную часть затронуть.. Да и куски PHP-кода здесь присутствуют.. |
Автор: Vitalik 4.8.2007, 20:22 |
Гм.. Неужели ни у кого никогда не возникало подобных проблем?.. ![]() Может быть все-таки мне стоит создать пару конкрентых вопросов в форуме по JS, может можно будет обойтись JS-шными "заплатками" к существующему методу?.. |
Автор: Oflashp 4.8.2007, 20:54 |
Ajax в руки, фреймы в жопу и поехали. Или юзай плавающие фреймы Или disable:none|block |
Автор: Vitalik 4.8.2007, 21:07 |
Oflashp, спасибо за ответ ![]() Дело в том, что нужно, чтобы основное содержимое скролилось, в то время как менюшка оставалась на месте. Это обязательное условие. Поэтому, наверное, единственным альтернативным вариантом будет плавающий фрейм. Но есть ли какой-то принципиальный выигрыш от этого? Чем с плавающим фреймом проще работать?.. Может я чего-то не понимаю.. ![]() Добавлено @ 21:08 Гм.. Сейчас вдруг пришла мысль.. Интересно, можно ли поместить содержимое в DIV и там как-то заставить его скролиться? ![]() Добавлено через 6 минут и 34 секунды Вот только жалко будет все обратно переделывать.. Так намучился с этими фреймами.. ![]() |
Автор: Oflashp 5.8.2007, 01:05 | ||
Для броузеров кроме IE доступно свойство position:fixed которое держит в заданном месте любой обьект и прокручивает ос страницей. Добавлено через 2 минуты и 10 секунд По поводу загрузки, в дополнительном окне пихаешь всё в див, с свойством по умолчанию visibility: none И в конце окна основного пусть скрипт пишет яву, которая будет менять это свойство...или перегружать фрейм. |
Автор: Vitalik 5.8.2007, 14:39 | ||
Выяснил, что можно сделать скролируемый DIV так:
Таким образом поместив его справа от менюшки можно добиться в точности такого же эффекта, как и с помощью фреймов.. ![]() Эх, как жаль, что я сразу до этого не догадался.. Придется теперь "откатываться" назад.. ![]() <оффтопик> P.S. Есть ли здесь на форуме самый обычный грустный смайл?.. Не сердитый анимационный, который сейчас под "sad", а тот что был давным давно под ":(". Или хотя бы аналогичный по смыслу. А то очень не хватает иногда.. </оффтопик> |