Фреймы — хорошо или плохо?


В среде веб-мастеров использование фреймов традиционно считается дурным тоном. На то есть много достаточно серьёзных оснований. Однако в некоторых случаях использование фреймов даёт такие преимущества, что отказываться от них просто неразумно. Лучше попробовать приуменьшить недостатки.

Недостатки

  • Неадекватное взаимодействие с поисковыми машинами. Пользователь, отыскивая вашу страницу в поисковике, получает обычно ссылку не на HTML файл, описывающий набор фреймов, а на один из файлов, который должен оказаться внутри фрейма. В таких файлах обычно нет навигационной информации и посетитель вынужден искать способ добраться до нее.
  • Невозможность поставить ссылку на отдельно взятую страницу сайта. Пользователь вынужден входить всегда через главную страницу, что для него не всегда приемлемо.
    Плюс мелкие недостатки, вроде плохо вписывающихся в дизайн полос прокрутки, и неочевидность для пользователя, в каком из фреймов находится «фокус» и др.

    Достоинства

  • Простота навигации и управления, например, при публикации больших объёмов информации, в одном из фреймов удобно помещать подробную навигацию, а также использовать якоря (<a name="...">). При таком подходе файл-оглавление выполняет сразу две функции — каталог и панель навигации. И без скриптов.
  • Уменьшение объёма страниц с содержанием за счёт удаления оттуда кода навигации.
  • Фреймовый сайт не вызывает у пользователя психологического напряжения в момент очищения ВСЕГО экрана после щелчка по ссылке, что тоже важно, т.к. создаётся впечатление непрерывной работы с сайтом.

    Итак, наряду с недостатками есть и достоинства, которые не позволяют нам отбросить эту технологию как бесперспективную. Оказывается, можно справиться с главными недостатками фреймов. Конечно, решение не является универсальным, но часто бывает незаменимо.

    Главная проблема, которую надо решить — целостность отображения фреймового сайта при переходе к нему по ссылке из поисковика. Для этого надо создать небольшой файл с программой, написанной на языке JavaScript, в который передаётся URL, по которому загружается страница. Скрипт перезаписывает загруженный документ описанием фреймов с именами DATA и NAV.

    frames.js

    function CreateFrames(URL)
    { if (window.name != "DATA") // Проверка на загружаемость файла в "неправильном" месте
    { document.write("<frameset cols='20%,*'>")
    document.write("<frame name='NAV' src='nav.html'>")
    document.write("<frame name='DATA' src='" + URL + "?'>")
    document.write("</frameset>")
    }
    }

    Знак вопроса нужен для того, чтобы браузер получил данные с сервера, а не вывел только что загруженную страницу.
    Далее на каждой странице надо поместить между тегами <head></head>следующий код:

    <script language="JavaScript" src="frames.js"></script>
    <script language="JavaScript">
    CreateFrames(document.URL);
    </script>

    Корректную загрузку всех страниц по ссылке с атрибутом target в данной ситуации обеспечит следующая строка:

    <a href="url.html?" target="DATA">Документ</a>

    Знак вопроса обязателен по уже известной причине.



    Предыдущая статья     Список статей    

    Следующий раздел