дизайн

раскрутка

web-прог.

развлечения

статейки

софт

игры

на главную

гостевая

заказать сайт

сочинения

мои друзья

Hosted by uCoz


1. Что такое HTML.

2. Основа HTML.

3. Таблици и формы.

4. Фреймы.

5. Java.—>>

6. JavaScript.


Рейтинг@Mail.ru

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Java

   Ну, чего смотришь? Думаешь, так сразу и расскажу про Яваскрипт и про то, как им можно винты доверчивым усерам хакать? А фиг тебе, послушай сначала сказку про белого бычка. Чего мычишь - недоволен? А что, ты и без меня знаешь, откуда произошел JavaScript, почему он именно так называется, кто его предки... Ы? Ну так и сиди тихо - ручки на коленках - и слушай знающих людей (вроде меня).
   Как, наверное, любая большая и в достаточной степени сложная вещь, язык Си был сделан не сразу и не вдруг. Что значит, обещал про Яваскрипт? Об чем хочу, об том и рассказываю. Твое дело слушать! Итак, испокон веку в неспокойных сердцах, мозгах и прочих внутренностях несчастных программистов на великом и могучем языке... конечно же, ассемблера! бродила дикая мысль о создании языка, на котором можно будет писать то же самое, что и на асме (который они почему-то называли языком программирования низкого уровня), но с тем же удобством, что и на, скажем, Паскале или даже старом добром Алголе (сиречь языке программирования высокого уровня). Ничего себе идейка, а? Но, как и всякая хорошая идейка по дороге в жизнь умудряется вляпаться во все мыслимые и немыслимые глупости, так и наш любимый и уважаемый язык Си был изрядно загажен уже одним только своим претворением в жизнь. Но разговор о Си, его недостатках (ну и о достоинствах тоже немного) - это отдельная песня, я очень надеюсь осветить ее в ближайших номерах этого лучшего на свете журнала.
  Пока что посмотрим, что же случилось с этой концепцией дальше.
  Никто не знает, что заставило коллектив компании Сунь Микросистемз, которому было поручено создание нового языка, обратить свой извращенный взгляд на Си. Может, они считали, что идея насчет языка программирования среднего уровня осуществилась? Я лично не знаю. Если хочешь, можешь спросить об этом прямо у них, но предупреждаю: они очень странные люди и ни слова не понимают по-русски!!
  Но, так или иначе, была директива от начальства: создать новый сиподобный объектно-ориентированный простой в разработке и обращении машинонезависимый язык. Тоже нехило, да? Но директива от начальства - это серьезно, на это нельзя просто так наплевать и усесться дальше играть в Диаблу. Точнее, можно, но только так, чтобы это не было заметно. На этот раз дело двигалось гораздо более шустро и без заметных напрягов. Ну, "новый сиподобный" - это понятно, берем Си и вешаем всех необходимых нам собак на него. "Объектно-ориентированный" - смотрим на сишную (точнее будет сказать сиплюсплюсную (или сиплюсплюснутую?) реализацию всяких там инкапсуляций-интерполяций, полиморфизмов-антропоморфизмов и наследования. Простого такого наследования. Так, значит, смотрим на них и добавляем то, чего там по нашему мнению не хватает и чему там по нашему мнению самое место. Так, что там дальше... Ага, "простой". Элементарно, Ватком! Там же не сказано, что язык должен быть чем-то большим, чем просто объектно-ориентированное фуфло. Так что берем и смело обрезаем (а правильнее сказать, коцаем) все, не связанное с объектной ориентацией. Если что связано, но не очень крепко - дергаем, отрываем и только потом коцаем.
   "Машинонезависимый"... Кхм... Это несколько сложней. Хотя все равно решаемо. Пока комп тормозит, помогая Диабле перейти на новый уровень, придумываем некую виртуальную машину (Николас Вирт тут не при чем, равно как и автомагазин в Интернете). Виртуальная машина - это такая фигня, которая дико тормозит и лечит свою болезненную манию величия мыслью, что она чем-то похожа на микропроцессор. То есть действительно есть некий набор команд, с помощью которого умелые люди научились не допускать остальных до настоящего микропроцессора (не правда ли, это все очень сильно напоминает концепцию, использованную при создании языка Си?). Так вот, придумываем виртуальную машину и пишем интерфейсы для нее под все известные платформы. Не бесплатно, ясен пень!
   Прекрасно! Можем себя поздравить - монстер готов. Прямо хоть из печки да и сразу в Бестиарий. Ан нет - надо еще раскрутить хорошенько, попродавать немного, а там хоть трава на лысине не расти!

Умереть труднее, чем кажется

   В 1995 году несколько умных людей поняли, что что-то надо с этим делать. Как раз в это время несколько других умных людей собрались и решили разработать новый язык, причем действительно простенький, маленький и по-нормальному машинонезависимый, к тому же удобный для использования его при работе в Интернет (совместно с HTML). Как это ни странно, плясать они начали именно от такого сокровища, как Ява. От глобальной объектизации, конечно, отказались сразу, хотя ее ростки приходится выкорчевывать до сих пор.
Итак, всем стало ясно, что фирма Нетшкаф на базе сановой Явы сделала новый лангваг. Кому не ясно - читай сначала или спать ложись, поздно уже, в конце-то концов! А остальным не мешай.

JavaScript и Java - близнецы-братья?

   Прежде всего перестань тормозить и пойми, наконец, что JavaScript и Java - это совершенно разные вещи. Java представляет собой объектно-ориентированный язык программирования от компании Sun Microsystems и требующий для нормального безглючного функционирования компиляторов и кучи отдельных вспомогательных файлов. Этот язык хорош только для тех, кого не тошнит от Си++ и кто безумно помешан на объектно-ориентированном принципе программирования.
   Особая приблуда под названием Java Development Kit позволяет (вынуждает) :) создавать программы, которые могут работать как отдельные вполне законченные проекты или же как апплеты, подключенные к НТМL-страничке. Именно подключенные, так как каждый апплет должен храниться на сервере в своем отдельном файле в своем хитровыдуманном формате. JavaScript был разработан в Netscape. Он близок к Яве по трем причинам:

  1. По названию
  2. По некоторому общему простому набору команд, сходных в реализации (ну родственники, ёлы-палы!)
  3. По зарезервированным словам.

   По структуре, синтаксису и прочим прибамбасам, которые, собственно, и отличают один язык программирования от другого, ЯваСкрипт очень близок к Яве, но первый реализует свою функциональность только в составе страницы НТМL. Никто тебе не даст разрабатывать отдельные программулины или те же апплеты - скрипты должны располагаться только внутри НТМL (XML, VRML, SGML...) страницы. И начинают работать, только если эту страничку загрузить в подходящий бравзер типа Нетшкафы 2.0... 5.0 или маздайного мелкомягкого Интернет Ыгплорера 3.0 ... 5.0. Несмотря на отсутствие прямой связи с Явными фенечками, ЯваСкрипт вполне может обращаться к внешним свойствам и методам Ява-апплетов, встроенных в страницу HTML. Итого, разница сводится, на первый взгляд, только к тому, что Java-скрипты лежат внутри использующего их файла HTML, тогда как Java-программы существуют вовне. Теперь же рассмотрим более детально особенности JavaScript'a.

Понятие бестиповости

   JavaScript является исконно бестиповым языком программирования. Эта заумная фраза означает, что пользователю (точнее, программисту - разработчику программного обеспечения на этом языке) все равно, данные какого типа лежат в каждой конкретной переменной: строки, восьмимерные массивы, объекты, числа вещественные или целочисленные и так далее до исчерпания фантазии программера. Именно поэтому всяк переменную объявляют так:
char f='f';
int b=OxB;
unsigned long double pee=3.14; а в Яваскрипте - так: var f='f';
var b=134341;
var pee=3.14;

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

Объекты и их иерархия

   Основное понятие JavaScript - объект, но понимается это не так, как в Яве. Вообще, что такое 'Объект', знаешь? Это что-то типа сумки, в которую можно сложить сразу и дискету, и книжку, и даже собственную ногу (но только одну!) :) И при этом помнить, что в сумке есть все необходимые инструменты для вынимания/вкладывания вещей и для реализации некоторых других простейших действий с ними. В языке JavaScript существуют три праобъекта, от которых происходят все остальные.
Global - содержит только то, что в нормальных (не объектно-ориентированных) языках называется глобальными переменными.
Math - содержит большую кучу математических функций типа синусов-косинусов и всех возможных вариантов округления. Они выделены в отдельный класс (объект) только потому, что их много.
Эти два класса объединяет одно: объект (экземпляр класса) может быть только один на всех. Почему - я думаю ясно. Не может же быть несколько разных синусов? Синус - он и в Африке синус...
Object - это уже предок основного количества встроенных классов (точнее, всех, кроме вышеперечисленных). Ничего в себе нового не содержит, но хранится как почетный отец-основатель.
Но, понятное дело, это еще не все. Теперь мы с тобой рассмотрим еще шесть потомков Object, которыми так или иначе пользуются JavaScript-программисты.
Array - массив. Инициализируется так:

var mycoolArray=new Array(2);
var yourcootArray=new Array(2,3,4);
var ourcoolArray=new Array(new Array(2), new Array(4,5));

   В вышеприведенных примерах в первом случае создается одномерный массив размера 2 (размер массива всегда доступен по arrayName.length), во втором случае - тоже одномерный, но длины 3 и заполненный не нулями, а вполне определенными циферками. Третий пример комбинирует два предыдущих, создавая двумерный массив.
В виде завершения могу привести процедуру увеличения размерности массива на один. Хорошая вещь, использованная мною не в одном скрипте.

function incDim(l)
{ if (l=='nil')
{ var g=new Array(1);
g[0]=new Array(2);
return g;
};
var g=new Array(l.length+1),i;
for(i=0;i {
//в этом примере массив двумерный, но может быть и по-другому. Фантазируйте!
g[i]=new Array(2);
g[i][0]=l[i][0];
g[i][1]=l[i][1];
} g[l. length] =new Array(2);
return g;
}

   Boolean - очень малозначный (как и положено) булев тип. True означает правду, false - ложь. Вообще-то, JavaScript - язык бестиповый, как будет отмечено ниже, но полезно знать, что при умышленном конвертировании true переходит в 'true' строковое или 1 числовое, false - в 'false' или 0 соответственно. При конвертировании в Boolean любое не нулевое значение перейдет в true.
Date - немного напоминающий и Global, и Object. Как константа только для чтения существует объект Date. И такой же (только маленький и неизменный) объект может быть создан в любом месте твоего скрипта. Как типовую задачку можно рассмотреть создание часов в статусной строке (это внизу бравзера есть такая фигня).
<HTML>
<HEAD>
<SCRIPT>
// Функцию надо вызывать только один раз.
function display_time_in_status_line()
{
var d=new Date(); // который час?
var h = d.getHours(); // час от О до 23
var m = d.getMinutes(); // минуты от О до 59
var ampm = (h >= 12)?"PM":"AM"; //AM или PM?
if (h < 12) h -= 12; // нам нужно только первые 12
if (h == 0) h = 12; // полночь
if (m < 10) m = "О" + m; // добавить нулей
var t=h+':'+m+''+ ampm; // пусть лежат вместе
defaultStatus = t; //оно!!!
setTimeout("display_time_in_status_line()", 60000);
// делать ту же гадость каждую минуту
}
</SCRIPT>
</HEAD>
<BODY onLoad="display_time_in_status_line();">
<!- Здесь лежит очень большой и страшный HTML документ ->
</BODY>
</HTML>

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

function mycoolfunction(f)
{
alert(f++);
return --f;
}

а извращенная форма будет так:

var mycoolvar=new Function("f","alert(f++);return -f;");

и вызываться она будет как

var g=4;
mycoolvar(g);

   Класс, а? На первый взгляд немного дико, но архиудобно для работы с динамически создаваемыми функциями.
Number - используется в основном для преобразований. Ну кто в здравом уме будет писать var g=new Number(3); если можно довольствоваться var g=3;? Но при этом очень удобно использовать это для приведения к другому типу, например, так:

var g="3";
var h=Number(g);
var j=g+h;
var l=h+g;

   Думаете, после выполнения этого всего j будет равно l? А вот и фиг. В j будет лежать "33", тогда как в l - 6. Вот такие вот пирожки. С котятами.
String - строчка. Записывается в одинарных или двойных кавычках, но не сразу. Например, тебе кровь из носу надо, чтобы строковая переменная содержала такую строчку: '*"&'%"#. Думаешь, это невозможно? Как бы не так! На JavaScript возможно все...

var mycoolstring="'"+'*"&'+'"%"+'"#';

   Все ясно? Можешь отхлебнуть еще пивка и читай дальше...
В общем, String - класс с абсолютно аналогичным Number и полностью идентичным использованием. Только вот работает он совсем в другую сторону. Но - работает. За что ему и спасибо.

Маленькие объекты - большие достоинства

   Кроме девяти вышеперечисленных классов, в JavaScript есть еще несколько маленьких, но чрезвычайно важных, полезных и интересных объектов, которые невозможно причислить ни к одному из уже известных тебе классов. Понимание этого дела сильно осложняется еще тем фактом, что во многих умных книжках классы называются объектами (собственно, как и сами объекты.) Это вносит путаницу в и без того странный и пугающий для новичка мир объектно-ориентированного программирования. Я рассмотрю только несколько из них, так как почти все в браузерах представляется с помощью них.
document. Именно так, с маленькой буквы. Привыкай, в JavaScript все имена, кроме Самых Главных Объектов, традиционно пишутся с маленькой буквы. Причем, интересный момент: если название состоит из нескольких слов, то второе слово и дальше пишутся с большой, то есть var book, author; но var myCoolBook, authorOfThisVeryGoodDocument;
Этот объект - самый толстый из всех, он содержит во-первых, массив all, в котором, как ты уже, наверное, догадался, лежит все, что есть в документе, и во-вторых, то же самое, но отсортированное по разным критериям. К таким массивам относятся anchors, applets, embeds, filters, images, links, plugins, scripts, selection, styleSheets. Подробную инфу по ним можно найти в умных книжках или доках. Туг уж, как говорится, 'читайте доки - они рулез'. Или, как говорит один мой хороший знакомый, 'век живи, век RTFM, все равно LMD'. Не обращай внимания, это я так смешно шучу. Гы-гы-гы.,br> Там же можно при желании найти свойства activeElement, readyState, referrer и методы open, write, writeln, close, clear, createElement, elementFromPoint, execCommand, queryCommand Enabled, queryCommandlndeterm, queryCommandState, queryCommandSupported и queryCommandText. Имена у всех методов и свойств говорящие, так что должно быть все понятно. Я сказал должно! Позволю себе только отметить, что document.referrer содержит адрес документа, с которого был совершен переход на текущую страничку. Сечешь, хакер?
window. Содержит свойства parent, self, top, name, opener, closed, status, defaultStatus, returnValue, clientlnformation, document, event, history, location, navigator, screen, event. Как начнешь работать с HTML/JS ближе (если уже ни начал), разузнаешь все, что следует, про каждый из них.
Еще объект window содержит такие полезные методы, как open, showHelp, execScript, setTimeOut, clearTimeOut, setlnterval, clearlnteral, close, showModalDialog, alert, prompt, confirm, navigate, blur, focus, scroll и другие...
navigator. Содержит кучу переменных, среди которых следует упомянуть appCodeName (кодовое супер-пупер секретное имя браузера), appName (мирское имя его же), appVersion (версия проги), userAgent (appCodeName+'/'+appVersion (чтобы по три раза одно и то же не спрашивать), javaEnabled (а можно ли?), cookieEnabled (или все-таки нельзя?), plugins (архив плюгинов), mimeTypes (он же, но типов мимекодирования). Некоторые, особенно пальценутые браузеры, имеют только свои свойства этого объекта: taintEnabled в Netscape, browserLanguage, connectionSpeed, cpuClass, onLine, platform, systemLanguage, userLanguage в MSIE. Размер пальцев легко сравнивается количеством этих никому не нужных свойств.
Так, не засыпай! Я еще не сказал, что, во-первых, если юзер, который любуется твоей страничкой, делает это в МСИЕ, то ты можешь получить очень много информации из объекта navigator или даже запустить программу на VBScript. Во-вторых, вот маленький полезный примерчик:

function isNormalBrowser
{
if (navigator.appName.indexOf('Microsoft')==-1) return true;
}
function whatOS
{
if (navigator.appVersion.indexOf('Win')>=0) return 'MustDie';
if (navigator.appVersion.indexOf('UNIX')>=0) return '*NIX';
if (navigator.appVersion.indexOf('BSD')>=0) return 'FreeBSD';
if(navigatOr.appVersion.indexOf('Linux')>=0) return 'Linux';
if(navigator.appVersion.indexOf('Sun')==0) return 'SunOS';
//добавляй еще, какие знаешь...
return 'Unknown';
}

   Даже не знаю, надо ли тебе говорить, насколько важно знание операционки в разных благоприятных случаях... Не, не скажу!:)

Reserved Words

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

break false in this void
continue for new true while
delete function null typeoff with
else if return var

А вот из второй:

case debugger export super
catch default extends switch
class do finally throw
const enum import try

   Как видно, слова из второй группы не заслуживают и толики внимания, потому что даже искусственно придумать для них использование в JavaScript весьма и весьма проблематично!

дизайн

раскрутка

web-прог.

развлечения

статейки

софт

игры

на главную

гостевая

заказать сайт

сочинения

мои друзья