Большинство проблем, связанных с
использование
JavaScript скриптов на
сайтах, построенных на
системах управления контентом (
CMS)
связано со стилями (
CSS) и другими параметрами, передаваемыми
браузеру от
CMS.
Причем
файлов,
где хранятся
каскадные таблицы стилей (CSS) и
скрипты настроек может быть
много, а кроме того они могут еще и
динамически подгружаться
из других
файлов.
Т.е., например, страница содержит
ссылку на файл скрипта,
а сам этот
скрипт
содержит в себе инструкции подгружающие функции и стили
из других
файлов, ссылок на которых нет
в исходном
HTML-коде
страницы. Получается, что для
того, чтобы разобраться с поведением
шаблонной страницы,
то проанализировать все
файлы стилей,
на которые в ней есть
ссылки
может оказаться далеко недостаточно, и это при том, что далеко не
каждый
владелец
сайта разбирается в таблицах стилей,
а уж тем более горит желанием анализировать длинные
файлы
в поисках проблем. Про
анализ файлов скриптов
лучше вообще не вспоминать.
А как же быть владельцу сайта, если после
вставки JavaScript-кода
получилось что-то совсем не то?
Убрать все стили со
страницы? – есть
скрипты,
которые это делают. Но это же полностью разрушит
шаблон страницы и внешний
вид сайта.
Оказывается, для многих случаев есть
очень простое решение, свободное от всех недостатков. Его можно
применить, когда функции добавляемого в страницу
скрипта
на прямую не затрагивают находящиеся на ней объекты, а чаще всего так
это и бывает. Например, возьмем простейший
слайдер
контента: скрипт
со временем отказался работать непосредственно из кода страницы,
генерируемого
CMS.
Но и тогда, когда он работал прямо из страницы
проблем со стилями
хватало – нужно было искусственно подгонять некоторые
параметры скрипта.
Теперь он вынесен на
отдельную
страницу, которая включена в
общее наполнение в отдельном интегрированном в материал
фрейме
инструкцией
<IFRAME
height=”700”
width=”100%” src=”http://www.tunescript.biz-1.ru/files/scroll.html”></IFRAME>
Вроде бы ничего визуально не поменялось,
но
браузер
стал воспринимать скрипт, как содержание совсем другой страницы, на
которую распространяются только те
стили,
которые в ней явно указаны, а там никаких
стилей
не указано и на странице все выполняется правильно, как по учебнику.
Единственная возникшая единожды
проблема была связана с
кодировками. Т.е.
CMS
выдавала свои страницы в символах
Unicode,
а подгружаемая страничка со скриптом слайдера была сохранена
в кодировке
Windows-1251.
А
браузер
на автомате применял
кодировку основной
страницы (Unicode)
к интегрированному в нее
фрейму
и вместо букв получалась абракадабра. Эта проблема моментально решилась
прямым указанием
в тексте фрейма между
тегами:
<HEAD>
</HEAD>
такой строчки
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251"
/>
Эта строка дает прямое указание
браузеру
применить к данному документу
кодировку windows-1251.
Как видим теперь все работает без проблем. Напомню, что этот
скрипт плавно переключает
слайды с содержимым по кликам мышки.
Работает как часы в
Internet
Explorer, в браузере
Firefox
идет
прокрутка
слайдов, а при наведении на
слайд мышки прокрутка
останавливается, в
Safari
просто стоит первый
фрейм,
а в
Опере
не работает. Но браузерами
Internet Explorer и Firefox,
где
слайдер
работает пользуется более 90%
людей. То, что в некоторых браузерах этот скрипт не работает
обусловлено нереализованностью в них стандарта
HTML
относительно
тега marquee, на свойствах
которого построен
слайдер
контента.
И последнее, зайдя на главную страницу
сайта
http://www.tunescript.biz-1.ru/
Вы увидите там анонс
слайдера
с полностью рабочим
слайдером.
Сайт построен на
CMS
Drupal, которая
вырезает все скрипты из
страницы при автоматическом
формировании анонса
материала из-за чего,
слайдер
не мог бы работать на главной странице, будучи реализованным в коде
основного материала. Но,
CMS
Drupal вырезает скрипты со
страницы того материала, для
которого делается
анонс,
а тег
<IFRAME….></IFRAME>
скриптом
не является, а между тем подгружает внутрь себя все, что угодно
– вот и попал наш слайдер прямо на главную страницу и
прекрасно там работает.
CMS
Drupal содержит внутренние
инструкции типа
<!--BREAK-->,
с помощью которых веб-мастер может принудительно указать сколько кода
из материала должно попасть в анонс и если поставить
<!--BREAK-->
до тега фрейма
<IFRAME….>
</IFRAME>, то
фрейм
не попадет в
анонс и на главную страницу.
И наконец, аргументация специально для
тех предвзято относиться к
использованию фреймов.
Бытует мнение, что поисковики не любят
фреймы
и за это наказывают. Это совсем не так. Поисковики не любят
фреймы,
в которые подгружается материал из других доменов, а не с домена сайта.
Т.к. это, как правило, либо реклама, либо воровство чужого контента. Ну
с рекламой они еще мирятся, а с воровством нет. Кроме того, такие
приемы используют для продвижения
сайтов
черными методами, а также для перевода пользователя на
сайт
рекламодателя прямо подгружая его во
фрейм.
В то же время, Ваши собственные
скрипты и материалы
находятся на Вашем домене и не вызывают абсолютно никаких нареканий
– это просто технический прием реализации
сайта
и все. Такие
сайты
прекрасно работают и никогда в бан не попадают.
А я жду Ваших соображений и идей
касательно
фреймов
по адресу:
tunescript
(AT)biz-1.ru, где вместо (AT)
нужно подставить собачку. По Вашему желанию Ваши идеи могут быть
опубликованы в нашей рассылке со ссылкой на Ваш сайт.
Илья.