Первые письма рассылки статей сайта по Javascript.
Статья 1-я. Ссылки на справочники по Javascript,
в основном, переработанные и переведённые материалы,
без ссылок на w3c-стандарты. Статья 2-я.
Скрипт (частично PHP) получения показаний идущего
серверного времени. Без PHP имеем просто скрипт
идущих цифровых часов.
Информация о языке и технологиях в компактном читаемом виде, удобном для поиска и навигации. Важнее учебников для тех, кто понял структуру языка и может догадываться, где искать нужное понятие. Важнее учебников вообще, потому что с неё начинается знакомство разработчиков с новыми технологиями. Это уже потом её переводят, адаптируют и толкуют. Результаты приведены в ссылках. Начинающим полезно для знакомства с неизвестными терминами.
Справочник Веб-разработчика. Ю. Лукач, 2005. Ресурс развивается, но по JS проработан хорошо и, главное, глубоко. Может идти как учебник глубокого уровня.
Справочное руководство, учебник JS - полноценно содержательный, хотя несколько устаревший (IE5, NN4), уровня 2001 года, справочник. Начальная страница. Поиска нет, но хорошая навигация. Есть более новая версия, но только с исключительно неряшливым дизайном, например, здесь - [zip, 380 КБа]. Для лучшего представления замените таблицы
стилей из архива на такие: [rar, 1 КБа]. вариант с заменёнными стилями: [rar, 400 КБа].
Краткий справочник по CSS-2 Не настолько краткий, чтобы быть бесполезным. Хотя есть с тем же содержанием, но лучшим дизайном.
Д.Гудман предлагает (ан.) краткий список свойств и методов при объектах [pdf, 400 КБа, 2004г.] - бесплатное приложение к 5-му изданию "Библии JS". Учтены Мозилла 1.0 и Safari 1.0
docjs.com - (ан.) Tomer Shiran. Много примеров решений мелких задач, которые систематизированы. Справочник в примерах.
Руководство JScript. (рус.) Перевод MS-докум., 2005, pauk, www.r-t-f-m.info. .
Время синхронизируется при передаче страницы из скрипта PHP на сервере, затем включается счётчик времени на JS на локальном компьютере-клиенте. Как вариант, этот же скрипт работает как часы локального времени.
Иногда требуется отобразить идущие часы. Возможны вариации -
показать время сервера, показать часы в художественном оформлении,
показать время клиентского компьютера или остаток времени до события.
Ограничимся вариантом показа идущих часов в текстовом виде и сосредоточимся на синхронизации часов с сервером, чтобы показывать идущее серверное время.
Поскольку часы сервера и клиента довольно точны, чтобы постоянно не заниматься сравнением, достаточно сделать сравнение один раз. Если упростить задачу и пренебречь задержкой ответа сервера на запрос, то задача для сервера сокращается до простой передачи времени и своего часового пояса.
Отобразим время сервера и клиента на странице, используя свойство текстового болка innerHTML. Каждую секунду будем его обновлять и получим 2 поля с идущим временем. От сервера получаем, используя 2 функции PHP, - дату в формате количества миллисекунд с 1970 года ("начало эпохи Unix"), gmmktime()*1000, и смещение временной зоны, переведённое в минуты, чтобы формат соответствовал правилам JavaScript, date('Z')/60. У JS-показаний часового пояса (.getTimezoneOffset()) меняем знак, чтобы
стал естественным (положительное смещение к востоку от Гринвича) и согласованным. Остальной код вычисляет разницу во времени и выводит показания часов сервера и клиента.
Если этот код поставить в страницу *.php, получим серверное и клиентское время на странице, если в *.htm - только клиентское.
<U>Местное время клиента:
</U> <span id=timeK></span><br>
<U>Время сервера с переводом на зону клиента:
</U> <span id=time></span><br>
<U>Местное время сервера:
</U> <span id=timeS></span><br>
<script>d=document;
dServM=<?=date('Z')/60?>;
//Смещение часового пояса сервера (минут)
Dphp=<?=gmmktime()?>*1000;
//Гринв.вр.сервера в мсек.. Если нет пхп,
// заменить <?=gmmktime()?> числом 1131037423
// ,это будет 17:03 для MSK
d.write('Начальное время сервера: '
+(new Date(Dphp))+'<br>');
Djs=(D=new Date()).getTime()
-D.getTimezoneOffset()*60000;
//Гринв.вр.клиента в миллисекундах
d.write('Начальное время клиента: '
+(new Date(Djs))+'<br>');
DD=Dphp-Djs; //Разнобой часов.
//Прибавлять, чтобы получить серверное время,
// но в местном поясе
d.write('Часовой пояс сервера: '
+dServM+'<br>');
dKlientM=-(new Date()).getTimezoneOffset();
//У JS сдвиг в обратную сторону, приводим к PHP
d.write('Часовой пояс клиента: '
+dKlientM+'<br>');
DPoyas=(dServM-dKlientM)*60000;
//Разность поясов. Прибавить,
// чтобы вернуться к местному серверному
onload=function(){setInterval(
"clock1()",999);clock1();}
function clock1(){var D0;hms('timeK',D0=new Date);
hms('time',new Date(D0.getTime()+DD));
hms('timeS',new Date(D0.getTime()+DD+DPoyas));
}
function hms(layr,X){var m,s;
d.getElementById(layr).innerHTML
=X.getHours()
+':'+((m=X.getMinutes())<10?'0':'')+m
+':'+((s=X.getSeconds())<10?'0':'')+s;
}
</script>
Формат вывода работающего скрипта:
Местное время клиента:4:38:44 Время сервера с переводом на зону клиента:1:26:37 Местное время сервера:1:26:37
Начальное время сервера: Mon Apr 24 03:29:53 UTC+0400 2006
Начальное время клиента: Mon Apr 24 06:41:59 UTC+0400 2006
Часовой пояс сервера: 240
Часовой пояс клиента: 240
В правой колонке писем указывается "уровень" статьи. Это попытка облегчить ориентирование в сложности и направленности материала до его прочтения. Пока что нет описания вариантов уровня, приведём здесь варианты, которые могут быть. То же самое относится к классификации в левой колонке, которая отражает род материала (статья, примечание, ...).
Род статьи, указанный в левой колонке.
Видится несколько вариантов рода статьи.
Статья (подробный обобщённый разбор вопроса).
Обзор ссылок (примечания к просмотренным ресурсам).
Ответ на вопрос (короткий конкретизированный вариант статьи).
Примечание (к выпуску или выпускам рассылки, к статьям).
Уровень статьи, указанный в правой колонке.
Помогает оценить целевого читателя. Имеет много вариантов, число которых будет постепенно расширяться. Речь об уровне всегда идёт относительно языка Javascript - человек может быть очень опытным специалистом в соседней области - програмировании или дизайне, но быть начинающим или неопытным пользователем скриптов.
"начинающие" (изучать Javascript) - люди, умеющие писать программу, найти ошибку в коде, при необходимости знающие, где искать ответы на вопрос, но имеющие большие пробелы (30-70%) в знаниях, так как получили их на решении нескольких задач и чтении частей учебника.
пользователи - имеющие слабое представление о работе скриптов, требуют инструкций по установке скриптов на веб-страницы. Если могут изменить что-то в скрипте, то методом проб с большими тратами времени.
знающие - могут написать или переработать любой скрипт, так как знают 80-90% объёма языка, если не напамять, то где найти.
опытные - имеющие, к тому же, опыт написания тысяч строк кода, поэтому быстро решающие любые задачи.
"которые не в курсе", "не знающие язык" случайно попавшие читатели, для которых текст или не нужен, или нужно начинать с основ.
1-й, 3-й и 4-й пункты - это программисты (по отношению к JS, группа читателей). Они же могут выступать как пользователи. Но программисты на других языках вполне могут оказаться теми, "которые не в курсе".
Текущая очерёдность плана статей(подписчики могут корректировать через голосование).
1. Варианты проверки правильности заполнения полей ввода: диапазон чисел, только числа, не кириллица, подтверждение отправки формы.
2. Автоматический выбор группы опций в мультиселект-списке, многоуровневое меню в <select>,
3. Как писать тексты с доступом через JS без экранирования специальных символов (< и другие).
4. select и list - в них есть много общего. Как и с меню навигации. Эмулятор селекта.
5. Древовидное меню, подход к данным, отделение данных от представления.
6. Многонедельный календарь со ссылками. (По списку строится календарь.)
Если обнаружилось, что приходили не все письма, пожалуйста, сообщите об этом автору рассылки, чтобы помочь разобраться, какие коды некоторые почтовые серверы не пропускают. Было замечено, что HTML-коды одного примера не проходили через POP-сервер с программой SpamAssassin версии 3.1.0 .