Динамическая загрузка скриптов и callback
Опубликовал root в блоге JavaScript 28 мая 2011, 01:47
Появилась у меня простенькая задача — после загрузки модулей Снапа вызвать callback функцию. Для Огнелиса и Оперы тупо использовал событие onload. Код примерно такой:
Читать дальше
var s = document.createElement( 'script' );
s.src = 'la-la-la.js';
s.onload = function() { .... }Читать дальше
Техника программирования с использованием флагов
Опубликовал root в блоге JavaScript 28 мая 2011, 01:44
Программирование на JavaScript имеет один серьезный недостаток — необходимо постоянно думать о совместимости в различных версиях браузера. Очень часто, приходится писать несколько вариантов реализации одного и того же алгоритма. Проверять каждый раз под каким браузером запущен код — занятие нелепое! Удобно в начале выполнения скрипта определить флаги, по которым определять поддерживает браузер то или иное свойство, например, чтобы определить поддерживает ли браузер DOM, вводим такой флаг:
Читать дальше
Читать дальше
Наследование в JavaScript
Опубликовал root в блоге JavaScript 27 мая 2011, 23:32
Широко известный факт, что в JS нет классов, а значит нет наследования. Но при сильном желании можно реализовать механизмы наследования самостоятельно. Например, используя трюки, которые описаны далее.
Читать дальше
Читать дальше
Чат на ajax
Опубликовал paramon в блоге JavaScript 21 марта 2011, 21:49
Для того чтобы запустить чат на своем сайте достаточно взять готовые скрипты и разместить их у себя на хостинге. Но для нас легких путей не существует, поэтому в данной статье я расскажу о том как работают интернет-чаты, и как можно сделать свой собственный чат. Так как я считаю, что чатом можно назвать только скрипты работающие через Ajax, в статье будет описываться именно этот подход получения данных. В конце статьи я приведу готовые скрипты для организации чата.
Читать дальше
Читать дальше
Использование AJAX при создании сайта
Опубликовал root в блоге JavaScript 25 февраля 2011, 21:21
Данный термин еще очень молод, придумал его Джесс Джеймс Гаррет (Jesse James Garrett). Название говорит, что за основу берется использование JavaScrіpt, а точнее в центре разработки лежит использование объекта языка JavaScrіpt – XMLHttpRequest, который разрешает осуществление запросов к серверу после того, как страница загрузилась. Контакт между клиентом и сервером осуществляется не одновременно, используя ХML представление. Существуют и другие аналогичные объединения как (Asynchronous Java + XML) и (Asynchrounous ActіonScrіpt + SWF).
Есть общность, созданная веб-ориентированными технологиями, которые, объединяясь, дают выход на новый уровень развития веб-технологий.
Основную популяризацию AJAX осуществляет компания Google, которая использует данный подход при создании популярных веб-ресурсов Gmaіl, Google maps и Google suggest, это вызывает интерес среди веб-разработчиков.
Читать дальше
Есть общность, созданная веб-ориентированными технологиями, которые, объединяясь, дают выход на новый уровень развития веб-технологий.
Основную популяризацию AJAX осуществляет компания Google, которая использует данный подход при создании популярных веб-ресурсов Gmaіl, Google maps и Google suggest, это вызывает интерес среди веб-разработчиков.
Читать дальше
Что такое ajax?
Опубликовал root в блоге JavaScript 24 февраля 2011, 22:02
Ajax — это технология асинхронной передачи данных. Такое скупое и непонятное определение Ajax-а выдаст практический любой веб-программист. Но для пониманмя всей значимости данной технологии его будет явно недостаточно. Поэтому я позволю себе дать понятие Ajax в описательной форме.
Итак, Ajax — это когда для отображения страницы не нужно перезагружать страницу, а это в свою очередь значит более быструю работу страницы и меньшие объемы передаваемого трафика.
Читать дальше
Итак, Ajax — это когда для отображения страницы не нужно перезагружать страницу, а это в свою очередь значит более быструю работу страницы и меньшие объемы передаваемого трафика.
Читать дальше
Работа с checkbox в jQuery
В данной статье я расскажу о том, как в jquery можно обрабатывать элементы checkbox. В частности будет рассмотрен вопрос получения списка всех элементов checkbox на странице, а так же операции над ними. В конце будут приведены примеры кода на JavaScript.
Читать дальше
Читать дальше
Для чего нужен jQuery.fn
Опубликовал root в блоге JavaScript 07 февраля 2010, 07:03
Каждый кто сталкивался с написанием собственных плагинов на jQuery задавал вопрос — "В чем различие между объявлением функций через jQuery и jQuery.fn?".
Для того, чтобы ответить на поставленный вопрос приведу два примера.
Пример 1.
Пример 2.
Если запустить первый пример, то произойдет одно из двух событий — браузер выдаст ошибку (например, если у Вас установлен FireBug) либо не выдаст ничего. А если запустить второй пример, то на экране появится сообщение о количестве найденных элементов.
Прежде чем делать какие-либо выводы, приведу еще один пример:
В данном примере, будет выдано сообщение о количестве найденных объектов.
Думаю теперь у нас достаточно информации, чтобы сделать некоторые выводы:
Вывод 1: Если задать функцию через jQuery.fn, то она будет работать с элементами найденными через функцию $(). Контекст этой функции будет содержать выбранные элементы;
Вывод 2: Если задать функцию через jQuery, то к ней можно обратиться только через глобальный объект jQuery. В таком случае контекст функции будет указывать на глобальный объект window.
Таким образом, если нужно написать плагин, который будет работать только с выбранными объектами, то нужно его создавать в jQuery.fn, а если нам неважно какие элементы страницы были выбраны, то лучше создавать функцию через jQuery.
Для того, чтобы ответить на поставленный вопрос приведу два примера.
Пример 1.
jQuery.sayHello = function() {
alert('Привет! Найдено ' + this.length + 'элементов' );
}
$('div').sayHello(); // ничего не происходит
Пример 2.
jQuery.fn.sayHello = function() {
alert('Привет! Найдено ' + this.length + 'элементов' );
}
$('div').sayHello(); // Выводит "Привет! найдено ХХ элементов", где ХХ - это количество найденных элементов на странице
Если запустить первый пример, то произойдет одно из двух событий — браузер выдаст ошибку (например, если у Вас установлен FireBug) либо не выдаст ничего. А если запустить второй пример, то на экране появится сообщение о количестве найденных элементов.
Прежде чем делать какие-либо выводы, приведу еще один пример:
jQuery.sayHello = function(elem) {
alert('Привет! Найдено ' + elem.length + 'элементов' );
}
jQuery.sayHello($('div'));
В данном примере, будет выдано сообщение о количестве найденных объектов.
Думаю теперь у нас достаточно информации, чтобы сделать некоторые выводы:
Вывод 1: Если задать функцию через jQuery.fn, то она будет работать с элементами найденными через функцию $(). Контекст этой функции будет содержать выбранные элементы;
Вывод 2: Если задать функцию через jQuery, то к ней можно обратиться только через глобальный объект jQuery. В таком случае контекст функции будет указывать на глобальный объект window.
Таким образом, если нужно написать плагин, который будет работать только с выбранными объектами, то нужно его создавать в jQuery.fn, а если нам неважно какие элементы страницы были выбраны, то лучше создавать функцию через jQuery.
Подводные камни JavaScript или опасное свойство Semicolon insertion.
Опубликовал root в блоге JavaScript 25 января 2010, 07:19
Я очень люблю язык JavaScript, на мой взгляд его преимущества с лихвой покрывают многочисленные недостатки. Но чтобы писать хорошие программы на этом языке нужно четко понимать какие опасности в нем таятся.
Одна из них заключается в том, что синтаксис JS не требует обязательного использования точки с запятой для разделения конструкций языка, но при этом на этапе выполнения недостающие символы расставляются автоматически.
Данная особенность, упрощает программирование и в простейших случаях не вызывает никаких проблем. Возьмем следующий код:
Во время выполнения он будет преобразован к следующем виду:
И это не приведет к негативным последствиям. Но к сожалению ни один язык в мире не способен читать мысли программиста, поэтому в другой ситуации неудачное преобразование может вызвать появление серьезных ошибок.
Для примера возьмем следующий код:
Не трудно догадаться, что в данной ситуации программист хотел чтобы функция возвращала значение «false». Но на самом деле она возвращает значение «undefined». И это вполне закономерно, потому что реально исполняется совсем другой код:
Самое простое, что можно сделать для избежания проблем с Semicolon insertion — это не разрывать строки на две подстроки. Но и этого будет недостаточно, для написания абсолютно безопасного кода.
Синтаксис JavaScript очень похож на синтаксис языка «Си». Например, для выделения блоков когда в JS как и в «Си» используются фигурные скобки.
Обычно программисты предпочитают один из двух вариантов оформления.
Первый — это когда открывающая фигурная скобка находится на одном уровне с конструкцией к конторой она относится:
Второй — когда открывающую скобку помещают на уровень ниже
Не трудно догадаться, что для JavaScript второй вариант пригоден не во всех случаях, в примере выше во время выполнения будет получен следующий код:
Обратите внимание, что в этом примере не только прибавились «недостающие» знаки, но и исчезли «лишние» символы фигурных скобок. Поэтому, чтобы избежать проблем в JavaScript, лучше не использовать переносы строк перед открывающей фигурной скобкой.
Конечно, сказанное выше описывает далеко не все возможные ситуации когда Semicolon insertion вызовет проблемы при выполнении кода. Поэтому я приглашаю всех дополнить эту статью своими примерами и мыслями используя для этого комментарии.
Одна из них заключается в том, что синтаксис JS не требует обязательного использования точки с запятой для разделения конструкций языка, но при этом на этапе выполнения недостающие символы расставляются автоматически.
Данная особенность, упрощает программирование и в простейших случаях не вызывает никаких проблем. Возьмем следующий код:
var a
var b
Во время выполнения он будет преобразован к следующем виду:
var a;
var b;
И это не приведет к негативным последствиям. Но к сожалению ни один язык в мире не способен читать мысли программиста, поэтому в другой ситуации неудачное преобразование может вызвать появление серьезных ошибок.
Для примера возьмем следующий код:
function a() {
return
false;
}
Не трудно догадаться, что в данной ситуации программист хотел чтобы функция возвращала значение «false». Но на самом деле она возвращает значение «undefined». И это вполне закономерно, потому что реально исполняется совсем другой код:
function a() {
return ; // Обратите внимание JS сам доставил «недостающий» знак точки с запятой
false;
}
Самое простое, что можно сделать для избежания проблем с Semicolon insertion — это не разрывать строки на две подстроки. Но и этого будет недостаточно, для написания абсолютно безопасного кода.
Синтаксис JavaScript очень похож на синтаксис языка «Си». Например, для выделения блоков когда в JS как и в «Си» используются фигурные скобки.
Обычно программисты предпочитают один из двух вариантов оформления.
Первый — это когда открывающая фигурная скобка находится на одном уровне с конструкцией к конторой она относится:
function a() {
return {
value: false
}
}
Второй — когда открывающую скобку помещают на уровень ниже
function a()
{
return
{
value: false
}
}
Не трудно догадаться, что для JavaScript второй вариант пригоден не во всех случаях, в примере выше во время выполнения будет получен следующий код:
function a()
{
return ;
value:
false;
}
Обратите внимание, что в этом примере не только прибавились «недостающие» знаки, но и исчезли «лишние» символы фигурных скобок. Поэтому, чтобы избежать проблем в JavaScript, лучше не использовать переносы строк перед открывающей фигурной скобкой.
Конечно, сказанное выше описывает далеко не все возможные ситуации когда Semicolon insertion вызовет проблемы при выполнении кода. Поэтому я приглашаю всех дополнить эту статью своими примерами и мыслями используя для этого комментарии.
ExtJS. Создаем дерево на основе JSON Data
С развитием идей RIA (Rich Internet Application) все чаще стали появляться задачи создать не какой-нибудь там веб-сайт, а вполне себе самостоятельное веб-приложение. Хотя насчет веб-приложения, может я и погорячился. Но вот панель управления для какой-либо задачи просят точно. Основой при выполнении подобных заказов служит построение интерфейса (по возможности приятной и дружелюбной наружности). Почему-то закачику глубоко плевать, на красивый во всех отношениях код, а вот на окошечки с менюшечками нет. Ну коли хочется так тому и быть.
Так как я не сторонник изобретать велосипеды, я решил использовать в своих проектах фреймворк ExtJS. Получив при это сразу два плюса: первый — это симпатичный интерфейс, а второй это все тот же симпатичный интерфейс, а так же унификация под один дизайн всех проектов.
Читать дальше
Так как я не сторонник изобретать велосипеды, я решил использовать в своих проектах фреймворк ExtJS. Получив при это сразу два плюса: первый — это симпатичный интерфейс, а второй это все тот же симпатичный интерфейс, а так же унификация под один дизайн всех проектов.
Читать дальше