Конфликты между сторонним JavaScript и CMS сайта – простое решение

    Большинство проблем, связанных с использование 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) нужно подставить собачку. По Вашему желанию Ваши идеи могут быть опубликованы в нашей рассылке со ссылкой на Ваш сайт.

Илья.