Обновить
171.54

JavaScript *

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

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

Виджет выбора OpenID провайдера на Prototype

Время на прочтение1 мин
Количество просмотров1.4K
Когда-то я уже писал, как интегрировать OpenID авторизацию в ваш сайт. Речь шла о серверной части.
Сейчас же я говорю о UI части — виджет для выбора провайдера.

В качестве клиентской библиотеки для своего проекта я выбрал prototype и первым делом я полез в гугл поискать готовое решение. Удалось найти такое, но только для JQuery — code.google.com/p/openid-selector

И так мне ничего не оставалось как написать OpenID selector самому. Вот что получилось

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

Небольшой отладчик в Javascript

Время на прочтение3 мин
Количество просмотров626
Недавно столкнулся в исследованиях с проектом trimpath. Лично для себя ничего интересного не обнаружил, кроме интересного способа расстановки точек останова (я его немного видоизменил от оригинала — иначе длинные строки некорректно отображались в опере и ИА)

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

Не кроссбраузерный event

Время на прочтение3 мин
Количество просмотров3.4K
Здравстуйте, уважаемое хабрасообщество. Реквестирую консультацию.
Позавчера, во время разработки jQuery.keyboard столкнулся с абсолютной браузерной несовместимостью, ужасно неприятной непоследовательностью и т.д. в возврашении значения event.keyCode в различных браузерах. На удивление, единственный, кто меня порадовал — IE 6 (ies4linux) и больше всех огорчила — опера 10. Хромиум и фокс же ж вернули приблизительно одинаковый результат.
Читать дальше →

Отладка Javascript

Время на прочтение5 мин
Количество просмотров146K
Debug Logo

Многие задают мне один и тот же вопрос:
«Как дебажить этот $%*!%$! JavaScript?».

Так вот, во-первых JavaScript — не $%*!%$! А как я его дебажу — сейчас расскажу.

(Примечание: наверное эта статья больше для новичков. Так что не судите строго)

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

Javascript — персональное безумие

Время на прочтение3 мин
Количество просмотров1.8K

Есть случайное такое хобби — программирование на JavaScript.

Недавно возник у меня глобальный вопрос:
Как часто JS программисты задумываются над [function statement]?



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

Browser persistence

Время на прочтение2 мин
Количество просмотров1.7K
Browser persistence — техника, позволяющая хранить в браузере довольно большие объемы данных, которые в отличие от cookie не отсылаются на сервер при каждом запросе.

Все уже написано до меня, но на хабре никаких более-менее подробных упоминаний не нашел, поэтому написал краткий обзор — как это работает и собрал ссылки для более подробного изучения.
Читать дальше →

Getters & Setters в IE5+

Время на прочтение2 мин
Количество просмотров2.4K
Вот этим навеяло habrahabr.ru/blogs/javascript/66242

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

<script language="vbscript">
' Объявляем класс, экземпляр которого в последствии будем использовать из яваскрипта
Class Accessor
  Public Property Let hook(val)  ' объявляем сеттер для свойства hook класса Accessor
   MsgBox val
  End Property
End Class

Dim access ' объявление переменных в VB обязательно
Set access = New Accessor  ' создаем экземпляр класса Accessor
</script>

<script language="jscript">
// т.к. у VB и JS общее пространство имен, можно вполне использовать созданный ранее access
access.hook = 'ololo';
</script>


* This source code was highlighted with Source Code Highlighter.


Другими словами аксессоры есть в VB, VB есть во всех IE и пространство имен VB и JS общее, можно пользовать.
Кроссбраузерный пример

Попытка классификации и анализа существующих подходов к наследованию в Javascript

Время на прочтение9 мин
Количество просмотров3.1K

Некоторое время назад у меня дошли руки до темы, которая давно уже меня нервирует интересует. Эта тема — наследование в JavaScript.

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

Хочу сразу сказать, что я не претендую на глубокое понимание ООП в JavaScript, и даже не претендую на глубокое понимание ООП вообще. Я буду рад, если моя попытка анализа окажется кому-нибудь полезной, но основная цель публикации, в некотором смысле, противоположная — мне бы хотелось самому воспользоваться замечаниями людей, которые лучше меня ориентируются в теме, чтобы прояснить ее для себя.
Читать дальше →

Повышение качества javascript кода. JSLint

Время на прочтение6 мин
Количество просмотров31K

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

Всех у кого хоть раз болела голова при написании/чтении javascript кода прошу под кат.
Читать дальше →

placeholder.js

Время на прочтение1 мин
Количество просмотров24K
В HTML5 есть замечательный атрибут placeholder.

<input placeholder="inbox@disney.com">

placeholder

Сейчас он работает только в webkit-браузерах (Safari, Google Chrome).

С помощью JS, не изобретая велосипедов, placeholder.js делает этот атрибут кроссбраузерным.

<input placeholder="inbox@disney.com" id="some_input">
<script type="text/javascript">
  inputPlaceholder( document.getElementById('some_input') )
</script>


placeholder.js (1.3 килобайта)

Server-side JS (v8+Node)

Время на прочтение2 мин
Количество просмотров12K
Недавно видел на хабре спор по поводу того, что нам не нужны никакие скриптовые языки, кроме javascript. Утверждение, конечно, спорное, но меня заинтересовала возможность применения javascript на сервере.
Читать дальше →

Эмулятор Радио-86РК на Javascript

Время на прочтение2 мин
Количество просмотров8.5K


Когда деревья были большими, а проблемы просто громадными, существовал такой компьютер — Радио-86РК. Многие программисты на территории бывшего СССР начали свой путь с этой машины.

Но время шло, и РК плавно ушел в небытие. Но для особых фанатов существуют эмуляторы. А в современном мире Web 2.0 вообще модно, чтобы все работало прямо в браузере. А так как правильные браузеры типа Google Chrome предоставляют все возрастающую скорость JavaScript, то подобная мода весьма оправдана. А как результат, даже эмуляторы процессоров теперь можно запускать прямо в браузере (недавно на Хабре была тема про эмулятор Спектрума).

Я так вдохновился тем Спектрумовским эмулятором, что за пару дней перенес свой старый эмулятор РК на платформу JavaScript.

подробности

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

Используем паттерн Наблюдатель(Observer) для создания индикатора выполнения процесса на Javascript

Время на прочтение4 мин
Количество просмотров50K
Идея паттерна Observer заключается в создании зависимости типа один ко многим. При изменении состояния одного объекта(субъекта), зависящие от него объекты(наблюдатели) об этом оповещаются и обновляются. Это нужно для согласования состояния взаимосвязанных объектов без их жесткой связанности.

пример внутри

Вращение предметов без флэш

Время на прочтение2 мин
Количество просмотров10K
Всем привет.

Хочу предоставить вам на суд плагин для jQuery, позволяющий реализовать трехмерный показ предметов (например, телефонов или ноутбуков в каталоге интернет-магазина).

Пожалуй, все встречали подобные инструменты основанные на технологии flash. Однако я считаю, что её использование здесь не к чему. Поэтому потратив несколько часов я реализовал подобный функционал на javascript в виде плагина к jQuery.

вертеть дальше

Быстрая сортировка таблиц посредством Javascript

Время на прочтение3 мин
Количество просмотров17K
В процессе работы с таблицами, для удобства восприятия, а также быстрого анализа, рано или поздно возникает вопрос вывода отсортированного содержимого этих таблиц. Эту задачу в web-программировании можно решить двумя способами:

  • Сортировка на стороне сервера посредством SQL или backend'а;
  • Сортировка на стороне клиента.

Минусы первого варианта — это перезагрузка страницы на каждый клик пользователя по контролам сортировки. Плюсы — скорость сортировки на больших выборках.

Минусы сортировки на стороне клиента — сравнительно низкая скорость работы, прямо зависящая от браузера и мощности компьютера пользователя. Плюсы — отсутствие перезагрузки страницы, следовательно, иногда это дает бОльшую скорость получения отсортированного содержимого, т.к. в данном случае нет задержки между отправкой запроса серверу и получением результата.
Читать дальше →

Prototype 1.6.1: быстрее, чище, команднее

Время на прочтение1 мин
Количество просмотров889
Поздравляем Эндрю Дюпона (Andrew Dupont) и Тоби Ланжеля (Tobie Langel) (нового официального соведущего ядра Prototype) с выходом нового 1.6.1:
  • Полная совместимость с новыми браузерами. Эта версия Prototype полностью поддерживает 1.0 и более крупные версии Google Chrome, и Internet Explorer 8 как в режиме совместимости, так и в суперстандартном.
  • Сохранение метаданных в элементах. С лёгкостью объединяйте джаваскриптовые пары ключей и значений с элементами DOM. Поглядите блогозапись, с которой это началось.
  • Новые события мыши. Собственнические события Internet Explorer — «mouseenter» и «mouseleave» — теперь доступны для всех браузеров.
  • Улучшенное быстродействие и домовитость. Часто использовавшиеся методы Function#bind, String#escapeHTML и Element#down стали быстрее, и Prototype лучше прибирает за собою.
  • Собрано со Sprockets. Теперь вы можете включать репозиторий исходного кода Prototype в своё приложение и использовать Sprockets для управления зависимостями и для распространения.
  • Внутреннее документирование посредством PDoc. Наша документация по API теперь хранится внутри исходного кода посредством PDoc, так что проще посылать патчи или лицезреть документацию по конкретной версии.
Подробности глядите во блогозаписи о RC2, во блогозаписи о RC3, и в CHANGELOG.

Вот несколько симпатичных изменений. Хотя с неподдельным волнением ожидаю увидеть работу нового Prototype 2.0 и как команда перезагрузит Prototype.

TeX-like разметка на Javascript

Время на прочтение2 мин
Количество просмотров2.4K
При написании console-like форума был задан вопрос: «какую разметку лучше использовать?». Среди вариантов были стандартный бб-код ([b]bold[/b]), вики-разметка(*bold*), или TeX-like разметка (\b{bold}). После недолгого совещания выбор был остановлен именно на TeX-like. Была написана небольшая библиотека, которая, по моему мнению, достаточно интересна, расширяема и гибка. Желающие посмотреть пример могут перейти по ссылке freecr.ru/TeX
Под хабракатом у меня исходный код под лицензией LGPL, объяснение возможностей, принципов и примеры написания плагинов.

Сверхплавное передвижение объектов

Время на прочтение2 мин
Количество просмотров7.1K
Иногда у веб-разработчиков возникает задача, которая требует плавного движения объекта по экрану. Это может быть строка загрузки, какой-то спрайт (например, машинки на клавогонках) или что-то ещё. Проблема возникает, когда сдвиг даже на одну точку кажется слишком резким и портит общее ощущение от происходящего. Как этого избежать? Использовать приёмы антиалиасинга.

Мы сделали небольшой пример (а затем и ещё один с зацикленным фоном), в котором можно посмотреть, как выглядит плавный сдвиг с субпиксельной точностью и антиалиасингом, и как выглядит тот же сдвиг без этого эффекта.

Как это сделано?
Читать дальше →

Создание слайдеров с анимированной прокруткой, используя Javascript

Время на прочтение4 мин
Количество просмотров15K
В этой статье я хотел бы поделиться своими практическими наработками в создании анимированных слайдеров, используя JavaScript.
Читать дальше →

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