div.main {margin-left: 20pt; margin-right: 20pt}
JavaScript: полезные функции (часть II)
Михаил
Мельников Web-studio
"Cherry-Design" Несколько небольших и полезных Java-скриптов,
позволяющих добавить к функциональности сайта некоторые приятные мелочи.
Дата модификации документа
Некоторые web-дизайнеры находят полезным отображать внизу странички дату
последней модификации документа. Это делается для того, чтобы посетитель мог
определить, насколько часто обновляется сайт. Правда, это же накладывает и
определённые обязательства по поддержке сайта. Согласитесь, что наблюдать
прошлогоднюю дату доставляет мало удовольствия. Но если Вы всё-же решились
использовать этот приём, то следующий скрипт Вам пригодится.
Есть два способа добиться нужного нам результата. Первый заключается в том,
что строчку с датой вы корректируете вручную, а второй, и он более
привлекательный, заключается в использовании свойства lastModified
объекта document. Для этого в нужном месте странички достаточно вставить
следующую конструкцию:
<script
language="JavaScript"> <!--
document.write ("Дата последней
модификации: " + document.lastModified);
//--> </script>
Дата выводится в формате, соответствующем региональным настройкам компьютера,
а это не всегда нам подходит. Но, несколько усложнив скрипт, мы сможем выводить
дату практически в любом формате. Для этого достаточно печатать дату модификации
документа не сразу, а предварительно разобрав её на составляющие. Сделать это
можно при помощи создания объекта Date, передав ему в качестве параметра
document.lastModified:
<script language="JavaScript"> <!--
LastDate =
new Date(document.lastModified);
LastDay = LastDate.getDate(); //
Считываем число LastMonth = LastDate.getMonth(); // Считываем
месяц LastYear = LastDate.getYear(); // Считываем год
LastYear =
LastYear % 100; LastYear = ((LastYear < 50) ? (2000 + LastYear) : (1900 +
LastYear));
document.write ("Дата последней модификации: ", LastDay, "/",
LastMonth+1, "/", LastYear);
//--> </script>
Теперь осталось только прочитать день, месяц и год, воспользовавшись методами
объекта Date и напечатать дату в нужном нам формате. Именно так и сделано в
вышеприведённом скрипте, который печатает дату в формате, соответствующем
региональным настройкам России (ДД/ММ/ГГГГ).
Обратите внимание на два обстоятельства. Первое - это то, что при печати
месяца мы увеличиваем его на единичку, так как метод getMonth()
возвращает нам номер месяца в виде целого числа от 0 (январь) до 11
(декабрь).
А второе заключается в том, что год мы печатаем не сразу, а вначале решаем
проблему 2000 года. В данном случае эта проблема заключается в том, что метод
getYear() в версии JavaScript от Microsoft возвращает нам год в виде
четырёх цифр, а в версии Netscape Navigator в виде последних двух (после 2000
года в виде трех :), которые следует рассматривать как смещение от 1900
года.
Решение проблемы осуществляется достаточно просто - вначале мы берём остаток
от целочисленного деления на 100 и тем самым гарантированно получаем год в виде
двух последних цифр. Теперь нужно выяснить, к какому веку относятся эти две
цифры - для этого мы сравниваем их с 1950-м годом и считаем, что если число
меньше 50, то это уже новый век, а иначе - старый. Данным способом мы превратили
проблему 2000 года в проблему 2050 года :), когда эта уловка уже наверняка
потеряет смысл.
Как сделать страничку стартовой?
В последнее время стало достаточно модным применять этот скрипт. Его смысл
заключается в том, что где-нибудь на видном месте странички мы делаем ссылку,
нажав на которую пользователь сможет сделать Вашу страничку стартовой, т.е.
такой, которая загружается при запуске броузера и нажатии на кнопку "Домой".
Этот приём может быть полезен для информационных ресурсов, но не стоит им
особо злоупотреблять.
К сожалению, на данный момент скрипт будет работать только под Internet
Explorer версии 5.x. Учтите это. Сам же код требуется разместить в подходящем
месте, а выглядит он так:
<p><a href="#"
onClick="this.style.behavior='url(#default#homepage)';
this.setHomePage('http://www.yoursite.com/'); return false;">Сделать
стартовой страницей</a></p>
Желающие могут сделать
стартовой, например, мою страничку. ;-)
Добавление странички в "Избранное"
Подобно предыдущему скрипту, этот приём также работает лишь под Internet
Explorer, но уже начиная с 4-ой версии. И точно такие же замечания по поводу его
уместности.
Размещая на видном месте ссылку на этот скрипт, мы позволяем пользователю при
помощи одного щелчка добавить наш сайт в папку "Избранное". А сам скрипт
выглядит следующим образом:
<p><a href="#"
onClick="window.external.addFavorite('http://www.yoursite.com/', 'Description');
return false;">Добавить сайт в Избранное</a></p>
Желаете проверить? Нажмите здесь,
и Вы сможете добавить в избранное мой сайт. :-)
Распечатка страницы из кода
Иногда требуется распечатать страничку, причём сделать это нужно
непосредственно из кода. Сначала кажется, что это невозможно, но всё не так
плохо. На самом деле в Netscape Navigator для этого есть даже встроенный
механизм. Достаточно просто вызвать метод window.print()
А вот для получения такого же результата в Internet Explorer мы применим не
совсем обычный способ и воспользуемся специализированным объектом ActiveX,
который и позволит нам распечатать страничку.
Таким образом, наша задача разделилась на две части. Первая - определить тип
броузера, а вторая - корректно вставить объект на страничку. Вот пример кода,
который делает все необходимые действия:
<script language="JavaScript"> <!--
var
browser_name = navigator.appName;
function printit() {
if (browser_name == "Netscape")
{ window.print();
} else
{ var WebBrowser =
'<object id="WebBrowser1" width=0
height=0 classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></object>'; document.body.insertAdjacentHTML('beforeEnd',
WebBrowser); WebBrowser1.ExecWB(6,
2); } }
//--> </script>
Осталось только вызвать этот код. Для этого, к примеру, можно воспользоваться
событием onClick:
<a href="#" onClick="printit();">Распечатать
статью</a>
Только не путайте этот скрипт с версиями страничек "для распечатки".
Страничка для распечатки - это обычный html-файл, из которого убрали
дизайнерское оформление и оставили очень простую вёрстку, чтобы при печати не
было лишних элементов. Приведённый же выше код непосредственно посылает
страничку на принтер.
Архив с примерами скриптов, рассмотренных в данной и предыдущей статьях,
можно взять отсюда.
|