Автор: etLux Взят на сайте: http://www.sources.ru
Динамическое изменение цвета полоски прокрутки в IE5.5 и выше.
Здесь представлен скрипт, позволяющий динамически менять цвет скролбаров (scrollbars) на страничке при помощи обыкновенной функции JavaScript. Так же будет рассмотрено, как связать функцию изменения цвета полосок прокрутки с ссылками и событием mouseOver.

Шаг 1. Необязательный стиль

Изначально, цвет скролбаров можно установить при помощи стиля <style> ... </style> в заголовке страницы (обычно это #C0C0C0):

<style>
body{
scrollbar-base-color: #C0C0C0
}
</style>

 

Шаг 2. Скрипт

Поместите следующий код <script ... </script> в заголовок Вашей страницы. Код как говорится полность готов к употреблению и не требует доработок:

<script>

// (C) 2001 www.CodeLifter.com
// http://www.codelifter.com
// Free for all users, but leave in this header

function changeScrollbarColor(C){
if (document.all){
document.body.style.scrollbarBaseColor = C
}
}

</script>

 

Шаг 3. Вызов скрипта

Чтобы установить цвет, достаточно вызвать функцию с параметром значения цвета в формате #FFFFFF. (Обратите внимание на одинарные и двойные кавычки!)

Обычно функции вызываются через ссылки:

<a href="javascript:changeScrollbarColor('#FF0000')">Change to Red</a><br>
<a href="javascript:changeScrollbarColor('#FF8000')">Change to Orange</a><br>
<a href="javascript:changeScrollbarColor('#FFFF00')">Change to Yellow</a><br>
<a href="javascript:changeScrollbarColor('#00FF00')">Change to Green</a><br>
<a href="javascript:changeScrollbarColor('#4444FF')">Change to Blue</a><br>

Так же код функции можно вызвать из различных событий мышки;
Следующий под меняет цвета скролбара при наведении курсора мышки на ссылки:

<a href="#" onMouseOver="changeScrollbarColor('#FF0000')">Change to Red</a><br>
<a href="#" onMouseOver="changeScrollbarColor('#FF8000')">Change to Orange</a><br>
<a href="#" onMouseOver="changeScrollbarColor('#FFFF00')">Change to Yellow</a><br>
<a href="#" onMouseOver="changeScrollbarColor('#00FF00')">Change to Green</a><br>
<a href="#" onMouseOver="changeScrollbarColor('#4444FF')">Change to Blue</a><br>

Так же можно использовать события onMouseOut, onClick, или другие.

Сайт управляется системой uCoz
H‡~¬УЇ¤ЈЇсию для распечатки. Открыв любую статью, вы увидите слева иконку принтера и ссылку на скрипт, который сгенерирует версию для распечатки.

В чем заключается идея? Она состоит в том, чтобы передать специально написанному скрипту адрес существующей странички и, вычленив из нее интересующие нас фрагменты, сформировать страничку для печати и вывести ее в броузер.

Начнем с первой задачи - как передать скрипту, для какой именно странички нам необходимо создать версию для распечатки? Т.к. сайт у нас статический, то ссылку на скрипт и адрес странички нам придется добавить самим. Причем на каждой страничке, которую мы хотим представить в виде, удобном для распечатки. Используем для этого метод GET, т.е. передадим параметры в адресной строке:

<a href="php/print.php?id=mypage.htm>Версия для распечатки</a>


Код написан в предположении, что страничка, на которую мы внедряем этот фрагмент, имеет название mypage.htm и расположена в корневом каталоге. Подразумевается также, что скрипт, генерирующий страничку, расположен в подкаталоге php/ и называется print.php.

С первой задачей мы справились, скрипт вызывается, но самого скрипта еще нет. Сейчас мы и займемся его написанием. Первый этап будет заключаться в чтении нужной странички. Мы передали имя файла в скрипт в переменной $id, поэтому нам осталось только проверить ее наличие и считать в переменную:

// Проверяем что переменная передана в скрипт и что такая страничка существует
if (!empty($id) && file_exists("../".$id)) {
$string = @file("../".$id); // считываем содержимое файла в массив
$string = implode("", $string); // преобразуем массив в строку
} else {
die("Не передан адрес странички для распечатки!");
}


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

Но вначале мы поговорим о том, как устроена наша страничка. А точнее, как идентифицировать нужные нам фрагменты. Я буду исходить из того, что базовая страничка, которую мы анализируем, устроена примерно так:

<html>
<head>
<title>Заголовок страницы</title>
.....
</head>

<body>
.....
<!-- Text begin -->

<p>Содержательная часть страницы, которую мы хотим напечатать.</p>

<!-- Text end -->
....
</body>
</html>


Точками я обозначил несущественные в данном случае фрагменты кода. Основываясь на этом представлении странички, мы можем словесно обозначить нужные нам фрагменты текста:

Название статьи - расположено между тегами <title></title>
Текст статьи - находится между комментариями, помечающими в коде начало и конец содержательной части страницы.

А теперь переведем словесные описания в форму, понятную компьютеру:

// Вытаскиваем название статьи
ereg("<title>([^<]*)</title>", $string, $regs);
$title = ereg_replace("<br>", " ", $regs[1]);

// Вытаскиваем текст статьи
ereg("<!-- Text begin -->(.*)<!-- Text end -->", $string, $regs);
$text = $regs[1];


В вышеприведенном коде я использовал два регулярных выражения для вычленения соответственно названия статьи (оно теперь хранится в переменной $title) и его содержимого (хранится в переменной $text). В обоих случаях механизм регулярных выражений ищет на страничке нужные фрагменты согласно ранее описанным правилам.

Будем считать, что автор всех статей один человек (а для частных проектов это, как правило, так и есть), поэтому имя автора просто присвоим переменной. Но вы должны понимать, что нет никаких принципиальных ограничений, не позволяющих вытащить из текста имя автора при помощи регулярных выражений.

$author = "Михаил Мельников";


Дату распечатки мы также сформируем автоматически, используя текущее время:

$date = date("j/n/Y H:i:s");


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

<html>
<head>
<title><? echo htmlspecialchars($title); ?></title>
</head>

<body>

<h1><? echo htmlspecialchars($title); ?></h1>
Автор: <? echo htmlspecialchars($author); ?><br>
Дата распечатки: <? echo $date; ?><br>
<hr>

<? echo $text; ?>

<hr>

<p align=center>Copyright (C) 2003 Web-studio "Cherry-Design"</p>

</body>
</html>


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

Сайт управляется системой uCoz