|
|
|
| Как правильно построить такую конструкцию.
Есть родительская (основная) страница, имеющая вертикальную полосу прокрутки. Внутри родительской страницы имеется внутренний фрейм (iframe) куда загружается другая страница, которая также имеет вертикальную полосу прокрутки. На странице внутри фрейма имеется ряд заголовков со ссылками на якоря (закладки типа <a target="_self" href="#link">link</a>).
При переходе по такой ссылке на внутренней странице "срабатывает" полоса прокрутки, которая, однако "тащит за собой" полосу прокрутки основной страницы.
Смещение вверх основной страницы в данном случае крайне нежелательно. Как добиться статичности основной, родительской страницы независимо от того, "работают" ли полосы прокрутки на странице во внутреннем фрейме?
Пример подобной проблемы виден на сайте http://upc.dp.ua, где эта задача также не решена... | |
|
|
|
|
|
|
|
для: Palomnik
(08.09.2008 в 14:53)
| | В принципе браузер поступает АБСОЛЮТНО ПРАВИЛЬНО.
Ибо его задача - ПОКАЗАТЬ юзеру то, что он ХОЧЕТ видеть.
Нажал юзер на ссылку-якорь в ифрейме - браузер ИЗ КОЖИ ВЫЛЕЗЕТ, но сделает ВСЁ, чтобы ПОКАЗАТЬ этот самый якорь юзеру.
Соответственно, если основной странице не хватает текущей высоты для того, чтобы ПОКАЗАТЬ якорь в ифрейме, то основная страница ДОЛЖНА прокрутиться вверх ТАК, чтобы показать этот самый якорь.
Не хотите, чтобы основная страница прокручивалась вверх - тогда НЕ УВИДИТЕ якоря. И смысл ссылки-якоря просто исчезнет. Какой смысл в ссылке-якоре "#что-то", если это "что-то" после нажатия на ссылку-якорь юзер не увидит?
Решение проблемы мне видится ЕДИНСТВЕННОЕ: добавить к коду файла в ифрейме столько тегов <BR> перед тегом </BODY> (или задать такой padding-bottom тегу <BODY>), чтобы даже самая последняя строчка файла в ифрейме СМОГЛА вписаться в текущий размер основной страницы при нахождении движка её вертикальной прокрутки в самом верхнем положении.
Решить можно, во-первых, ТУПО - ЗАВЕДОМО прописав ЗНАЧИТЕЛЬНОЕ количество тех самых тегов <BR>, или задав тегу <BODY> изначально ОГРОМНЫЙ padding-bottom.
Ну и во-вторых, можно решить немного ПОИЗЯЩНЕЕ - "посадить" на событие ONLOAD тега <IFRAME> функцию, коя пересчитает высоту окна браузера, высоту ифрейма, высоту содержимого файла в ифрейме и ДИНАМИЧЕСКИ добавит необходимую "кучку" тегов <BR> в конце тела документа файла в ифрейме (или же ДИНАМИЧЕСКИ пропишет тот самый padding-bottom для тега <BODY> в файле, который в ифрейме).
На мой взгляд, первый (ТУПОЙ) способ ЯВНО предпочтительнее -:)
Само-собою РАЗУМЕЕТСЯ, что всё это возможно ТОЛЬКО в том случае, если файл внутри ифрейма ВАШ (т.е. с одного и того же домена, что и индексный файл). В случае, если файл в ифрейме ЧУЖОЙ - вообще ничего сделать НЕЛЬЗЯ.
*Внимательно прочтите | |
|
|
|