Меню сайта
Категории каталога
Советы по дизайну, графике и баннер [17]
- Даже Артем Лебедев, который является легендой в Web дизайне, с чего- то начинал. Здесь мы постарались собрать статьи для начинающих Web дизайнеров. Если вы начали заниматься этим увлекательным делом, то уделите несколько минут и почитайте о подводных камнях
PHP - примеры скриптов [21]
- В этом разделе опубликованы материалы о php скриптах с примерами, самый лучший метод разобраться со скриптом, ну это вы знаете, написать самому или разобрать чужой код, по сравнению с изучением книги, статья является наиболее легким вариантом, тем более, что мы здесь собрали самые нужные примеры
Программирование на языках [35]
Программирование на самых популярных языках, заметки о заработке, оболочки - В этом разделе мы собрали статьи о заработке, анализ интерфейса мобильных телефонов со стороны программирования, анализ програмных оболочек
Статьи по поисковой оптимизации [3]
- В этом разделе представлены честные методы поисковой оптимизации. Всем известно, что оптимизация бывает белой и черной. Мы постараемся осветить здесь оба
Что такое PageRank? [1]
Выполнение javascript [1]
В этом разделе мы понемногу рассмотрим все основные элементы javascript. Это позволит тут же писать и тестировать простейшие скрипты.
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Понедельник, 20.05.2024, 04:28

WELCOME!


Приветствую Вас Гость
Каталог статей
RSS
Главная » Статьи » статьи для web программистов » Выполнение javascript

Выполнение javascript

Первые шаги

В этом разделе мы понемногу рассмотрим все основные элементы javascript. Это позволит тут же писать и тестировать простейшие скрипты.

Выполнение javascript

Javascript подключается напрямую в HTML-файл. Самый простой способ - это написать javascript-команды внутрь тега <script> где-нибудь в теле страницы.

Например:

Выделить код
<html>
<head>
<title>Простой скрипт</title>
</head>
<body>
<h1>Считаем кроликов</h1>
<script type="text/javascript">
for(var i=1; i<=3; i++) {
alert("Из шляпы достали "+i+" кролика!")
}
</script>

<h1>...Посчитали</h1>
</body>
</html>

Когда браузер читает HTML-страничку, и видит <script> - он первым делом читает и выполняет код, а только потом продолжает читать страницу дальше.

Так, в этом примере будет показано начало страницы, затем три раза выполнится функция alert, которая выдает окошко с информацией о текущем кролике, а только потом появится остальная часть страницы.

Открыть страницу со скриптом.

Обычно javascript стараются отделить, помещая его в HEAD-секцию документа, а в теле страницы по возможности оставляется чистая верстка. Вот так:

Выделить код
<html>
<head>
<script type="text/javascript">
function count_rabbits() {
for(var i=1; i<=3; i++) {
alert("Из шляпы достали "+i+" кролика!")
}
}
</script>

</head>
<body>
<input type="button" onclick="count_rabbits()"
value="Считать кролей!"/>

</body>
</html>

Здесь javascript-код только описывает функцию, а ее вызов осуществляется по нажатию на кнопку input.

Посмотреть.

Современное оформление тэга <script>.

На плохое оформление сейчас ругается только валидатор. Поэтому эту заметку можно не читать.

Однако, знать это полезно хотя бы для того, чтобы сразу отличать современный и профессиональный скрипт от написанного эдак лет 5-6 назад.

Атрибут <script type=...>
По стандарту этот атрибут нужен для указания языка скрипта, но по умолчанию принят javascript, поэтому даже атрибута type нет - все работает ок. Но валидатор будет ругаться, т.к стандарт требует этот атрибут
Атрибут <script language=...>
В старых скриптах нередко можно увидеть атрибут language. Этот атрибут давно мертв и никому не нужен. Не используйте его для javascript.
Комментарии до и после скрипта
В старых руководствах по javascript встречается указание "прятать" javascript-код от старых браузеров, заключая его в HTML-комментарии <!-- ... -->:
<script type="text/javascript"><!--
alert("I'm here")
--></script>

Браузер, от которого прятали код (старый Netscape), давно умер. Современные браузеры комментарии просто игнорируют. Не ставьте их.

Реакция на действия посетителя. События

Основная ценность javascript - в его интеграции со страницей. Почти любой HTML-элемент умеет инициировать различные события, а на событие, зная его имя, можно назначить обработчик.

Примеры событий:

Событие с именем onmouseover
Курсор мыши появился над элементом
Событие с именем onclick
Клик мышкой по элементу
...
В зависимости от типа элемента, есть еще и множество других событий

Функция-обработчик события может предпринять какие-то действия, произвести изменения на странице, выдать предупреждение, отправить запрос на сервер и т.п.

Самый простой способ назначить обработчик - записать обработчик в атрибут с именем события.

Например, пусть при клике на кнопку input запускается функция count_rabbits(). Для этого запишем вызов функции в атрибут onclick:

Выделить код
<html>
<head>
<script type="text/javascript">
function count_rabbits() {
for(var i=1; i<=3; i++) {
alert("Из шляпы достали "+i+" кролика!")
}
}
</script>

</head>
<body>
<input type="button" onclick="count_rabbits()"
value="Считать кролей!"/>

</body>
</html>

Открыть страницу

Динамическое изменение страницы. DOM.

События позволяют скриптам реагировать на действия пользователя. Но надо и что-то делать в ответ.

Самая примитивная реакция - это показать alert. Что-то посложнее обычно предусматривает изменение на странице.

Например, чтобы показать сообщение в зеленой рамочке, можно добавить на страницу <div style="border: green 1px solid">...сообщение</div>.

Основным инструментом работы и динамических изменений на странице является DOM (Document Object Model) - объектная модель, используемая для XML/HTML-документов.

Согласно DOM-модели, документ является иерархией.
Каждый таг образует отдельный элемент-узел, каждый фрагемент текста - текстовый элемент, и т.п.

Пример DOM-дерева

Рассмотрим, например, такую страничку:

Выделить код
<html>
<head>
<title>
О лосях
</title>
</head>
<body>
Правда о лосях.
<ol>
<li>
Лось - животное хитрое
</li>
<li>
.. И коварное
</li>
</ol>
</body>
</html>

Корневым элементом иерархии является html. У него есть два потомка. Первый - head, второй - body. И так далее, каждый вложенный таг является потомком тага выше:

На этом рисунке синим цветом обозначены элементы-узлы, черным - текстовые элементы.

А вот так выглядит дерево, если изобразить его прямо на HTML-страничке:

Кстати, дерево на этом рисунке не учитывает текст, состоящий из одних пробельных символов. Например, такой текстовый узел должен идти сразу после <ol>. DOM, не содержащий таких "пустых" узлов, называют "нормализованным".

Зачем, кроме красивых рисунков, нужна иерархическая модель DOM?

Очень просто:

Каждый DOM-элемент является объектом и предоставляет свойства для манипуляции своим содержимым, для доступа к родителям и потомкам.

Обход и манипуляции с DOM

Для манипуляций с DOM используется объект document. Он содержит массу полезных методов и свойств, которым будет посвящена отдельная статья. Используя document, можно получать нужный элемент дерева и менять его содержание.

Например, этот код получает первый элемент с тэгом ol, последовательно удаляет два элемента списка и затем добавляет их в обратном порядке:

Выделить код
var ol = document.getElementsByTagName('ol')[0]
var hiter = ol.removeChild(ol.firstChild)
var kovaren = ol.removeChild(ol.firstChild)
ol.appendChild(kovaren)
ol.appendChild(hiter)

Для примера работы такого скрипта --- кликните где-нибудь на тексте на лосиной cтраничке

document.write

В старых руководствах и скриптах можно встретить модификацию HTML-кода страницы напрямую вызовом document.write.

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

Избегайте document.write.. Кроме случаев, когда Вы действительно знаете, что делаете (а зачем тогда читаете эту статью - Вы и так гуру)

BOM

BOM (Browser Object Model) - специальные объекты браузера, такие как окна, куки и т.п.

В отличие от DOM, нет какого-либо единого стандарта, описывающего BOM, но основные объекты: window/cookie/location во всех браузерах унифицированы.

При помощи BOM можно открыть новое окно, поменять URL фрейма, поставить куки или послать запрос на сервер. В частности, BOM используется для популярной технологии AJAX.

ECMAScript

Стандарт (формальное описание синтаксиса и работы языка) javascript называется ECMAScript. На нем, кстати, основан не только javascript, но и несколько других языков, например ActionScript (Flash).

По ECMAScript есть спецификация, которая подробно описывает синтаксис, управляющие конструкции и базовые объекты языка.

Например, вот скрипт, который работает, используя только ECMAScript. Кстати, поэтому он будет работать и в других языках, основанных на ECMAScript, включая ActionScript:

Выделить код
var max = 5
try {
for(var i=0; i<Number.POSITIVE_INFINITY; i++) {
if (i>max) throw new Error("failed to reach the stars")
}
} catch(e) { }

Некоторые особенности синтаксиса ECMAScript

ECMAScript - и правда очень особенный язык. Особенно для тех, кто пришел из PHP, C, Java. В нем особым образом устроены объекты и функции.

Здесь мы остановимся лишь на нескольких, самых простых отличиях.

Точка с запятой

При переходе на новую строку точку с запятой можно не ставить. А можно ставить.

Эти две строки полностью эквивалентны:

alert(1)
alert(1);

В javascript перевод строки подразумевает точку с запятой

В частности, многие новички сталкиваются с ошибками при многострочных присваиваниях и вызовах.

Вот так не будет работать:

var a = "длинная " +
 
" строка "

Или, например, следующие два примера кода эквивалентны:

return
result;
return;
result;

В обоих случаях будет возвращено значение undefined (это значение возвращает любая функция, где нет оператора return, либо оператор return вызван без аргумента), а не result.

Чтобы многострочные опрераторы работали как надо - перенос строки нужно указывать обратным слешем "\", вот так:

Выделить код
var a = "длинная " + \
" строка "
 
return \
result;

Переменные

Директива var при объявлении переменной делает ее локальной. Все остальные переменные являются глобальными.

В этом примере переменная a в функции go объявлена как локальная. Поэтому глобальное значение a=1 не изменяется в процессе выполнения go.

Выделить код
a = 1
function go() {
var a = 6
}
 
go()
alert(a) // => 1

А здесь - ключевое слово var опущено, поэтому значение меняется:

Выделить код
a = 1
function go() {
a = 6
}
 
go()
alert(a) // => 6

Кстати, глобальных переменных в javascript на самом деле нет. То, что называют "глобальными" - на самом деле свойства специального объекта window. Например, в последнем примере alert(window.a) тоже выдало бы 6.

Все "глобальные" переменные привязаны к своему окну. Разные окна и фреймы имеют разные "глобальные" переменные, которыми могут обмениваться друг с другом.

Вообще, глобальных переменных в JS рекомендуется избегать, особенно при написании библиотек и компонент, которые предполагается использовать в разных приложениях.

Как правило - всё, что относится к компоненту, объявляется в виде свойств единого глобального объекта: ExtJS, dojo и т.п. Вы можете увидеть это в любом известном JS-фреймворке.

На этом введение заканчивается.

Следующий шаг приведет Вас в сундучок инструментов. Для первого посещения лучше взять что-нибудь попроще. Например, поставить браузер Firefox и плагин Firebug.

Категория: Выполнение javascript | Добавил: rozamafi (20.08.2008)
Просмотров: 996 | Комментарии: 1 | Рейтинг: 4.0/2 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024 | Хостинг от uCoz