Обновить
143.6

JavaScript *

Прототипно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Небольшой скрипт для создания главного меню(аналог десктопного mainmenu)

Время на прочтение2 мин
Охват и читатели2.6K

Предистория:


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

Описание скрипта:


Скрипт написан на чистом яваскрипте. Элемент меню представляет собой элемент списка li обернутый в тег a, внутри элемента могут быть любые теги. Каждое подменю является отдельным ненумерованным списком. Базовые элементы(которые мы видим в нераскрытом состоянии) являются тегом с установленным float:left и блочным режимом отображения.
Читать дальше →

Букмарклеты

Время на прочтение4 мин
Охват и читатели18K
Всем привет, сегодня речь пойдет про использование букмарклета, или закладки для браузера.

Кто не знает, это такая штука, которую можно добавить в закладки (да, я сегодня дебютирую в роли Капитана Очевидность :) и, при нажатии на нее, произвести какой-нибудь эффект.

Примером может служить герой сегодняшней заметки, который расположен по адресу http://ulizko. com/demo/allthat/. Инструкция по применению:
  1. Перетащите ссылку «link» на панель закладок или щелкните по ней правой кнопкой мыши и выберите пункт меню «добавить в избранное».
  2. Зайдите на какой-нибудь сайт, вроде http://twitter. com, и нажмите на эту закладку (ну или на избранное).


Появится окошко, в которое можно ввести данные. Вообще, предполагается, что это будет интерфейс добавления желаний в вишлисты (предварительно созданные на каком-то сайте), настроить триггеры оповещений, и прочее. Есть даже какая-то валидация начального уровня. И налажен обмен данными с сервером — то есть, на любом домене к вам приходит список ваших вишлистов, а ваше новое желание с любого домена долетит на крыльях любви к вишлисту и уютно устроится в его объятьях1.

Но. Мы сегодня не об этом, а о том, как делать такие штуки в принципе.

Интересно?

Клиентские Windows приложения на JavaScript

Время на прочтение4 мин
Охват и читатели23K
Хочу рассказать про один интересный способ создания приложений на JavaScript с родным виндовым GUI.

Вообще, существует куча разных вариантов написания виндовых приложений на JavaScript:
  1. HTA и WSH — HTML Applications и Windows Script Host — это, вероятно, самые известные технологии. HTA фактически представляет собой HTML страницу с расширенными правами в системе — возможностью лазить в сеть, гадить в реестр, файловую систему и подключать к этим делам ActiveX. С использованием HTA сделаны многие компоненты самой Windows.
  2. .NET Framework — этому вообще по барабану, на чем вы пишете, лишь бы итогом был MSIL. Возможно, JScript.NET вместе с Windows.Forms могут вызвать у кого-то ощущение родного виндового интерфейса. Лично меня они совсем не радуют — ни визуально, ни скоростью.
  3. XULRunner — framework от Mozilla предлагает Gecko вместо IE, XpCOM вместо COM/ActiveX. Это всего за 20 мегабайт оверхеда.
  4. wxJavascript — известная кросс-платформенная библиотека wxWidgets теперь и для JavaScript. Все это благодаря JS-движку SpiderMonkey от Mozilla и стараниям одного бельгийца. Кстати, этот же уважаемый — автор mod_js для Apache.

Ввиду того, что все вышеописанное уныло, громоздко и требует изучения, предлагаю рассмотреть еще один вариант — WSO.
Читать дальше →

ActionWeb. Асинхронный интернет.

Время на прочтение7 мин
Охват и читатели1.5K
С момента первого упоминания об AJAX в статье Джесси Джеймса Гарретта «Новый подход к разработке веб- приложений» 18 февраля 2005 года прошло уже 4 года. За это время наверно каждый веб- разработчик хоть раз испробовал эту технологию, и теперь обычного пользователя интернет уже не удивить динамической валидацией форм, автодополнением запросов в строке поиска, всплывающим контекстным меню и прочими ещё недавно диковинными вебдванольными интерактивными радостями, а современные JavaScript фрэймворки делают процесс разработки таких скриптов на порядок быстрей, эффективней и приятней для программиста. Но почему до сих пор подавляющее большинство разрабатываемых веб- сайтов придерживаются стандартной модели загрузки контента и не перешли полностью на AJAX платформу? Зачем каждый раз перезагружать всю страницу при нажатии на внутреннюю ссылку, когда нужно изменить только блок контента, а JavaScript файлы, CSS и большая часть HTML разметки не требует обновления?
Читать дальше →

Современная отладка JavaScript

Время на прочтение12 мин
Охват и читатели26K
В связи с достаточно широким выбором неплохих отладчиков, JavaScript-программисты могут получить достаточно много пользы, изучая то как их можно использовать. Их пользовательские интерфейсы становятся все более совершенными, более стандартизированными между собой и более легкими в использовании, что делает их полезными как для экспертов так и новичков в отладке JS. В этой статье мы обсудим передовые методы отладки для диагностики и анализа ошибок, используя типичное веб-приложение.

В настоящее время средства отладки доступны для всех основных браузеров.
  • Firefox имеет хорошо известное расширение Firebug
  • IE8 выпускается со встроенными Developer Tools
  • Опера 9.5+ поддердивает отладчик Dragonfly
  • У Safari есть JS-отладчик Drosera и DOM-вьювер WebInspector. В более свежих версиях отладчик интегрирован в WebInspector.

На данный момент Firebug и Dragonfly наиболее стабильны. Утилиты IE8 иногда игнорируют контрольные точки, а во время написания этой статьи WebInspector имеет некоторые проблемы совмстимости с последними билдами Webkit.

Изучите несколько средств отладки — вы никогда не знаете, в котором браузере возникнет следующая ошибка. Так как отладчики примерно сопоставимы в функциональных возможностях, между ними легко переключиться, как только вы разберетесь как использовать хотя бы один.

Читать дальше →

jQuery в Eclipse PDT, WTP/ Zend Studio for Eclipse

Время на прочтение1 мин
Охват и читатели3.5K
Захотелось мне тут для JavaScript perspective в любимом Eclipse заиметь автодополнение функций для jQuery с наличием полной документации. Порыскав в сети, нашёл только jQueryWTP, который даже ставить не хотелось из-за негативных отзывов, и устаревшей версии.
Потому пришлось сделать самостоятельно, и вот результат:

Требования: Eclipse, Web Tools Platform / Zend Studio for Eclipse / Любой редактор с поддержкой JSDoc

P.S. Конечно, есть и другие методы подключения jQuery, например использование NetBeans или плагина Aptana. Так уж получилось, что был выбран именно этот метод :)

хочу!

Правильный учебник

Время на прочтение4 мин
Охват и читатели4.4K
Как правильно должен быть написан учебник? Ответ стандартный:
— сначала предмет изучаемой науки;
— затем принципы и методология;
— потом основные разделы;
— потом подразделы каждого раздела;
— и в конце практические детали.

Этот порядок считается классическим, а учебник, написанный таким образом — образцовым.

В своей статье я намерен доказать, что хороший учебник пишется строго задом на перед. А хорошие учебники в области IT тем более. Не зря ведь существует «Hello, World!»
Доказательство

Самый короткий способ определения браузера IE (влючая IE.8)

Время на прочтение1 мин
Охват и читатели31K
IE='\v'=='v'

Это решение является победителем в соревновании на выявление самого короткого способа определения IE.

OCR и нейронная сеть на Javascript

Время на прочтение1 мин
Охват и читатели7.4K
Некий Shaun Friedle написал любопытный javascript который автоматизирует распознавание captcha на megaupload.

Пара любопытных особенностей скрипта:
  1. используется HTML 5 функция javascript getImageData для работы с пикселями;
  2. используется искусственная нейронная сеть для распознавания и работает довольно точно.

Пример работы: herecomethelizards.co.uk/mu_captcha
Исходник: userscripts.org/scripts/review/38736

Архитектура YASS. Часть 3: проблема выбора

Время на прочтение4 мин
Охват и читатели938
Это третья статья из цикла, посвященного разбору практических методов, заложенных в основу YASS. Первая статья была про модульное построение, вторая — про логику выбора CSS-селектора и организацию циклов.

Условное ветвление



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

var a = 1,
	b = 2,
	c = 3;
if(a == 1) {
	if (b == 2) {
		if (c == 3) {
			...
		}
	}
}

Читать дальше →

Отладка Javascript в различных браузерах и средах

Время на прочтение3 мин
Охват и читатели20K
Все мы прекрасно знаем как отлаживать JavaScript в FireFox — конечно же это FireBug. Какие же аналоги существуют в других браузерах…
Читать дальше →

Архитектура YASS. Часть 2: выборка по CSS-селектору

Время на прочтение5 мин
Охват и читатели1.2K
Статья о модульной загрузке была первой ласточкой в ряду заметок, в которых я собираюсь шаг за шагом рассказать, на каких принципах построена YASS, и каковы были результаты тестирования на максимальную производительность каждой части этой библиотеки. Но обо всем по порядку.

Постановка задачи



Насчет с самого простого: чего мы хотим добиться? Мы хотим, задав произвольную строку CSS-селектора, соответствующую спецификации, получить на выходе массив из всех элементов, соответствующих этой самой строке. Вроде пока все просто.

В качестве иллюстрации спецификации можно привести следующие примеры:

//вернет элемент с идентификатором my_id
querySelectorAll('#my_id')
//вернет все элементы с классом external
querySelectorAll('.external')
//вернет все абзацы на странице
querySelectorAll('p')


Однако уже тут можно отметить один момент: очень часто нам нужно выбрать просто элемент по его идентификатору или найти все элементы с определенным классом. Эти операции встречаются достаточно часто во всех JavaScript-библиотеках, поэтому они должны выполняться максимально быстро. Запускать весь механизм анализа входной строки селектора просто в том случае, когда нам нужно вернуть один-единственный элемент, заданный с помощью идентификатора, крайне неосмотрительно. Здесь мы можем воспользоваться принципом ленивого программирования: «не делай того, чего можно не делать», — и достаточно сильно ускорить работу для простейших случаев.
Читать дальше →

Когда программисту нечего делать, пишем игры сами. Часть 2

Время на прочтение1 мин
Охват и читатели3.3K
Продолжим написание игры начатой в этом топике. Для тех кто хочет просто поиграть даю ссылку на законченную игру. Так же как и предыдущая статья эта предназначена для новичков в gamedev или для тех кто не верить в силу javascript.
Читать дальше →

Ближайшие события

Стыкуем компоненты в JavaScript

Время на прочтение5 мин
Охват и читатели2K
После заметки Стыкуем асинхронные скрипты и предложенного решения от Steve Souders я подумал о модульной загрузке какого-то сложного JavaScript-приложения. И понял, что предложенный подход в таком случае будет довольно громоздким: нам нужно будет в конец каждого модуля вставлять загрузчик следующих модулей. А если нам на разных страницах требуются различные наборы модулей и разная логика их загрузки? Тупик?

Ан нет. Не зря Steve упоминает в самом начала своей заметки о событии onload / onreadystatechange для скриптов. Используя их, мы можем однозначно привязать некоторый код к окончанию загрузки конкретного модуля. Дело за малым: нам нужно определить этот самый код каким-либо образом.

Решение первое: дерево загрузки



В качестве наиболее простого способа определить порядок загрузки модулей на конкретной странице можно предложить глобальный массив, содержащий в себе дерево зависимостей. Например, такой:
Читать дальше →

Когда программисту нечего делать, пишем игры сами. Часть 1

Время на прочтение13 мин
Охват и читатели12K
Недавно на хабре была статья «Когда программисту нечего делать…», вот и у меня такая ситуация но я не просто хочу дать ссылку на Цветные линии, а рассказать как можно самому сделать её. Всем кого интересует добро пожаловать под кат
Всем кого интересует добро пожаловать под кат

Производительность простых и сложных конструкций в JavaScript

Время на прочтение7 мин
Охват и читатели24K
Периодически натыкаясь на статьи, посвященные оптимизации кода на JS (вот одна из популярных) я ловил себя на мысли, что информации в них катастрофически мало. Перечислены 2-3 конструкции, 1-2 браузера и все на этом.

Как говорится, если хочешь сделать что-то хорошо, сделай это сам.
Я решил протестировать, в первую очередь для себя, скорость работы различных языковых конструкций (начиная с самых базовых) в основных современных браузерах и на основе этого сделать выводы о том, что и как использовать в скриптах, требовательных к производительности.

Ну и раз уж результаты получены, почему бы не выложить их для всеобщего пользования?

Upd: добавил графики результатов, предоставленные хабраюзером deerua (для тех, кто воспринимает визуальную подачу информации лучше чем табличную)
читаем дальше

Работа с объектами в JavaScript: теория и практика

Время на прочтение15 мин
Охват и читатели224K
В этой статье я хочу по возможности полно и последовательно рассказать о том, что такое объект в JavaScript, каковы его возможности, какие взаимоотношения могут строиться между объектами и какие способы «родного» наследования из этого вытекают, как это все влияет на производительность и что вообще со всем этим делать :)

В статье НЕ будет ни слова про: эмуляцию традиционной класс-объектной парадигмы, синтаксический сахар, обертки и фреймворки.

Сложность материала будет нарастать от начала к концу статьи, так что для профи первые части могут показаться скучными и банальными, но дальше будет намного интереснее :)

если не боимся многабуков, то читаем дальше

Когда программисту нечего делать…

Время на прочтение1 мин
Охват и читатели1.5K
… он возьмет и сделает бесполезную ерунду вечерком, просто так, для себя. Недоработано, сыро и не поддерживает оперу, извиняюсь, конечно, но мне хотелось спать =)

UPD: Перенес в JavaScript, надеюсь, я все правильно сделал

Bravequest — RPG на Prototype.js

Время на прочтение1 мин
Охват и читатели1.2K
Не буду вдаваться в подробности, лучше 1 раз посмотреть.
image
Игра слишком детская!
Можно посмотреть вот так
А ещё можно скачать себе
Весит около 2Мб. Проходится за 40-50 минут.

PS это 2-й мой пост за сегодня в этом блоге, не сочтите за флуд, просто появилось много времени :)
Все ресурсы игры принадлежат соответствующим правообладателям.

White IDE — Браузерная RAD среда разработки на JavaScript

Время на прочтение1 мин
Охват и читатели3.6K
Привет, хочу представить одну интересную разработку студии, в которой я работаю. И как ведущий разработчик буду её освещать :)
image
Читать дальше →

Вклад авторов