JavaScript + CGI вместо SSI

На главную страницу | Интернет | Хостинг | Сервисы

JavaScript + CGI вместо SSI


SSI является единственным нормальным способом вставки внешнего HTML-кода внутрь страницы. К сожалению, не на всех хостингах разрешено использование SSI, что связывает руки многим веб-мастерам.

Здесь я хочу предложить компромиссный вариант, а именно: вместо SSI использовать JavaScript. Сразу скажу, что так красиво, как с SSI, не получится, но, как говорится, "на безрыбье...".

Сразу скажу, что идею придумал не я: почерпнул я ее у сайтов, предлагающих другим сайтам вставить свой блок новостей.

Итак, идея основана на том, что в HTML-страницу нельзя вставить (на уровне клиента) внешний HTML-блок (что, по-моему - большой недостаток стандарта HTML), но можно вставить внешний JavaScript.

Например, так:

<SCRIPT LANGUAGE="JAVASCRIPT" src="js.js"> </SCRIPT>

При обработке этих строчек клиент должен загрузить файл js.js, отработать его как скрипт и вставить результат в выводимый документ.

Как это не печально, в файле js.js не может быть просто фрагмент HTML-кода, а должен быть именно скрипт, выводящий этот фрагмент. Скрипт довольно простой, но некоторые "заморочки" все-таки есть. Итак, JavaScript-код, выводящий HTML, довольно простой, и выглядит как:

document.write ('строка_HTML-кода\n'); document.write ('строка_HTML-кода\n'); и т.д.

Можно, конечно, написать и так:

document.write ('строка_HTML-кода\n строка_HTML-кода\n...');

это меньше по объему, но, во-первых, не так красиво, во-вторых, строчка получается длинной, неудобной для редактирования.

Вышеуказанная заморочка заключается в том, что не все символы HTML-кода можно передавать "как есть". Так, символ апострофа будет воспринят как конец строки и вызовет ошибку. Кавычки также вызовут ошибку. Поэтому зарезервированные символы должны ставиться после обратного слэша - прямо как в PERL :)

Так, HTML-строка

<INPUT type="submit">

будет выглядеть в JavaScript-варианте как:

document.write ('<INPUT type="submit">\n');

Если у Вас есть возможность запускать CGI-скрипты, этот процесс можно автоматизировать, используя специальный скрипт, "готовящий на лету" подобные JavaScript-ы из обычных вставляемых файлов.

Вариант такого скрипта в моем исполнении Вы можете найти здесь

Можете, конечно, и вручную составить JavaScript-фрагменты... В таком случае на вашем сервере может вообще не быть какого бы то ни было скриптинга - ни CGI, ни SSI, и этот метод будет работать.

Теперь о недостатках. А они, надо сказать, существенные...

В самом начале я говорил о том, что этот подход - далеко не SSI. И вот почему. Главное отличие в том, что:

1. SSI обрабатывается на сервере. Для пользователей и поисковых машин, обращающихся к Вашему сайту по HTTP, нет никакой разницы, сделана ли эта страница на SSI или это просто "сплошной" HTML-код - к ним попадет уже готовая страница: сервер соберет ее из фрагментов и скажет, что так оно и было :)

2. JavaScript загружается браузером и исполняется им же. Этот механизм работает на уровне клиента, а значит, не надежен. Если у посетителя отключен JavaScript, то он просто не увидит этого "инклюда". Поисковые машины также не будут исполнять этот скрипт и индексировать его результат (собственно, это можно обратить и во благо...). Кроме того, если пользователь сохранит страницу на диск, не сохранив JavaScript, он в дальнейшем также не увидит этого "инклюда".

Слава Богу, что в недостатки нельзя отнести различия JavaScript-объектных моделей NN и IE - благо скрипт очень уж простой :)

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


(c) Андрей Черный
angel07@inbox.ru

На главную страницу | Интернет | Хостинг | Сервисы

Хостинг Без Ограничений.