Автор статьи: Мельников Михаил
Несколько небольших и полезных 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-файл, из которого убрали дизайнерское оформление и оставили очень простую верстку, чтобы при печати не было лишних элементов. Приведенный же выше код непосредственно посылает страничку на принтер.