Фреймы + JavaScript
|
"...фреймы
использовать нельзя... Ну и ладно, ну и пусть я буду
зваться "чайником". Но я все равно
не согласен с г-ном Жарковым. Терпеть не
могу таких категоричных "профессиональных"
суждений! Создавать свой сайт я начал в декабре 1999 года. Тогда вопрос "использовать фреймы или не использовать?" у меня даже и не возникал. Просто опыта в вэб-строительстве было маловато (т.е. вообще отсутствовал) и преимущества использования фреймов казались неподлежащими сомнению. Со временем, конечно, я "вкусил" и все минусы фреймов. Но даже сейчас, спустя год с лишним, я не могу полностью отказаться от использования фреймов. Да и нужно ли решать этот вопрос столь радикально? Почему бы не поискать компромисс? После длительных раздумий, изучения чужого опыта и экспериментов над собственным сайтом, я пришел к выводу, что в большинстве случаев можно (и даже лучше) обойтись без фреймов, но на своем сайте я их пока оставлю. Оставлю ровно три – ни больше, ни меньше – жутко вспомнить, но в самом первом варианте верстки сайта я использовал шесть(!) фреймов. В этих заметках я не настаиваю
на профессионализме – я просто делюсь
своими соображениями. Если кому-то эта
информация принесет пользу, буду рад. В
противном случае считайте меня "чайником"
:о) Плюсы и минусы фреймов... На тему достоинств и
недостатков фреймовых структур
написано уже довольно много, поэтому я
лишь кратко опишу выводы, к которым
пришел лично я. Основных плюсов я бы выделил три:
А основных минусов, на мой взгляд, всего два и при разработке большого сайта с множеством страниц они весьма ощутимы:
Хотел оставить без комментариев,
но решил все же добавить пару слов. Я не
призываю вас использовать фреймы, но и
говорить "табу" не предлагаю.
Вполне можно найти оптимальное
использование фреймам, если не
бросаться в крайности. Ведь "если
звезды зажигают, значит кому-то это надо..." Я остановился на цифре "три" Я уже сказал, что в данный момент остановился на использовании трех фреймов на своем сайте. Два фрейма по краям я использую просто, чтобы красиво отцентровать основную зону сайта. Конечно, можно это сделать с помощью обычной таблицы. Но тут возникает небольшая проблема, о которой я скажу чуть ниже. Если верить статистике от SpyLog (http://www.spylog.ru/),
то чуть больше половины всех
пользователей смотрят на экран с
разрешением 800x600, примерно треть "ловит
удовольствие" на 1024x768, остальных (с
разрешением 640х480), уж извините, я в
расчет не беру. Логично в этом случае
верстать свой сайт в расчете на 800
пикселей. Но и при большей ширине экрана
хотелось бы смотреться достаточно
эстетично. Поэтому я использую
следующую структуру фреймов: <HTML><HEAD></HEAD> <FRAMESET framespacing=0 border=0 frameborder=0 cols="*,800,*"> <frame name="LEFT" src="left.html" scrolling=no> <frame name="MAIN" src="main.html" scrolling=auto> <frame name="RIGHT" src="right.html" scrolling=no> </HTML> При описанной структуре основное содержание сайта (фрейм MAIN) всегда будет обозримо на двух наиболее популярных "разрешенках". А фреймы LEFT и RIGHT будут видны при разрешении, превышающем 800х600. Вы считаете, что в данном случае можно было обойтись без фреймов? Конечно, можно использовать отцентрованную таблицу шириной 800 пикселей. Но в этом случае, если таблица окажется "короче" высоты экрана, то фоновый цвет (или узор) будет не слишком эстетично "обтекать" таблицу снизу: Вы спросите: "А что, на большую
таблицу фантазии не хватило?" Ну что ж,
всякое бывает. Так почему бы не
воспользоваться услугами фреймов? Они с
этой проблемой справляются. Так как все содержимое сайта содержится в среднем фрейме (MAIN), то с адресацией внутри сайта проблем не возникает. Один раз создав три фрейма, я больше о них не вспоминаю и дальше работаю только с MAIN, как будто фреймов вовсе и нет. Заморочки начинаются, когда я хочу адресовать посетителей на одну из страниц сайта, например, в почтовой рассылке. Можно, конечно, в этом случае наплевать на левый и правый фреймы. Зайдя на эту страницу, посетитель сможет нормально перемещаться по всему сайту, не имея проблем с фреймами. Просто не совсем эстетично будет выглядеть верстка, рассчитанная на 800 пикселей, если у зашедшего ширина экрана превышает 800. Впрочем, можно и создать
необходимые фреймы. И для этого хватит
всего одного дополнительного файла,
обвязанного JavaScript-ами: <HTML><HEAD></HEAD> <script language="JavaScript"> <!-- function SubSearch() { var s, ss; var s = window.location.search; ss = s.substr(1); return(ss); } document.write("<FRAMESET framespacing=0 border=0 frameborder=0 cols='*,800,*'>"); document.write("<frame name='LEFT' src='left.htm' scrolling=no>"); document.write("<frame name='MAIN' src='"+SubSearch()+".html' scrolling=auto>"); document.write("<frame name='RIGHT' src='right.htm' scrolling=no>"); document.write("</FRAMESET>"); //--> </script> </HTML> С помощью функций document.write()
будет динамически создан файл,
аналогичный приведенному в первом
примере. Исключение составляет фрейм MAIN.
Для него в качестве параметра src
будет подставлено значение,
возвращаемое функцией SubSearch().
А данная функция возвращает подстроку
адреса, следующую после вопросительного
знака ? (используется
свойство window.location.search) Ну вот, теперь чтобы попасть, к
примеру, на страницу page1.html, окруженную
фреймами LEFT и RIGHT, достаточно в письме
почтовой рассылки указать адрес http://адрес_вашего_сайта/nav.html?page1.
После открытия файла nav.html (структура
которого приведена в примере) с помощью
JavaScript будет динамически созданы три
фрейма: LEFT, RIGHT, MAIN и в последний будет
загружен файл page1.html Игорь Голинский
|
|