Обновить
137.2

JavaScript *

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

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

ECMAscript 5: Строгий режим, JSON, и так далее

Время на прочтение9 мин
Охват и читатели7.2K
Раньше я проанализировал функциональность обьектов и свойств ECMAScript 5. Это огромный новый аспект языка и он заслуживает особого рассмотрения.

Есть целый ряд других новых функций и API, которые также требуют внимания. Самыми значимыми из которых являются строгий режим и родная поддержка JSON.
Читать дальше →

ECMAscript 5: Обьекты и Свойства

Время на прочтение8 мин
Охват и читатели13K
ECMAScript 5 идёт по своему пути. Воскреснув из пепла ECMAScript 4, который был ужат обратно к ECMAScript 3.1, который далее был вновь назван ECMAScript 5 (подробнее) — он приходит с новым слоем функциональности, построенным на базе нашего любимого ECMAScript 3.

Анонсировано несколько новых API, включённых в спецификацию, но самая интересная функциональность заключена в коде обьектов и свойств. Этот новый код дает возможность существенно влиять на то, как пользователи смогут взаимодействовать с объектами, позволяя обеспечить геттеры и сеттеры, предотвратить перечисление, манипуляции, или удаление, и даже предотвратить добавление новых свойств. Короче говоря: Вы будете иметь возможность повторить и расширить существующий набор API для JavaScript (например, DOM), с помощью JavaScript (не используя более ничего).
Читать дальше →

Слушаем вызовы функций в Javascript

Время на прочтение12 мин
Охват и читатели11K
Многие знают о механизме Event-Dispatcher-Listener'ов, реализованному во многих языках программирования. Я же создам подобный механизм не для Event'ов, а для любого метода объекта JavaScript — Object.
Я не претендую на оригинальность, нет. Основная цель статьи — рассмотреть интересные механизмы прототипирования в JavaScript, создание декораторов и, собственно, постараться хоть немного раскрыть мощь и гибкость это чудесного языка, который так часто обижают и недооценивают.

UPD1: краткое содержание:
1. Создание декоратора на JavaScript
2. Создание механизма Function call listener с помощью декораторов

UPD2: от 09.06.2009
В конце статьи я добавил раздел Update: Decorator Mark II. В нём — исправления и улучшения (я не перекраивал всю статью из-за этого)

Итак, первый (и, надеюсь, не последний) рецепт в моей поваренной книге JavaScript.
Перейти к рецепту

Улучшаем формы или Веб-Восемь-Ноль-Сто-Три

Время на прочтение13 мин
Охват и читатели1.4K
Итак, мы выбрали браузер вместо отдельно стоящего толстого клиента. Пользователь очень хочет вводить данные. Однако, обычные формы плохие. Потому, что:

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

Processing.js

Время на прочтение2 мин
Охват и читатели14K
Данный язык уже был на хабре, однако пост был посвещен самому Processing, думаю многим будет интерессно почитать и про Processing.js.
Processing.js — это открытый язык программирования для визуализации в вебе который представляет собой портированный Processing на JavaScript. Processing.js использует Js для анимации и тег canvas для работы с изображением. Сразу же можно заметить некоторый минус данного подхода, он не особо дружен с IE, причем по заявлениям Microsoft поддерживать тег canvas они и в дальнейшем не собираются. Во всяком случае 8 работать отказался. Синтаксис реализации очень похож на синтаксис Java.
Читать дальше →

Raphaël

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

Привет, Хабр


В этом коротком очерке хотел бы рассказать о маленькой (по словам авторов) библиотеки на JavaScript — Raphaël. Данная библиотека использует для работы SVG и VML и служит, как не сложно догадаться для облегчения работы с векторная графикой в вебе.
Так же по утверждению создателей работает во всех актуальных на даных момент браузерах, а именно Firefox 3.0+, Safari 3.0+, Opera 9.5+ and Internet Explorer 6.0+. К сожалению обошли создатели внимание вторую лису, хотя сюда по данным лайвинтернета на ней приходится почти 2% пользователей, что вообще немало. Да, и не смотря на то, что Хром не заявлен, в нем тоже все работает как часы.
Читать дальше →

Suggest в Google — никакого аякса

Время на прочтение1 мин
Охват и читатели1.7K
Честно говоря, у меня, давно сложилось впечатление, что если клиент (в данном случае броузер) что-то должен с сервера забирать без перезагрузки страницы, то это обязательно должен быть AJAX XMLHttpRequest. Ткнул куда-то пользователь, сработало событие, сгенерировался AJAX XMLHttpRequest-запрос, пришел с сервера ответ, коллбэк обработал его и пользователь что-то увидел.

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

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

Исследование на тему замены стандартных кнопок

Время на прочтение8 мин
Охват и читатели2.8K
В процессе работы над интерфейсом одного продукта, появилась надобность в изготовлении собственного дизайна кнопок. За это время код, который заменяет стандартную кнопку на требуемую несколько раз переписывался и в данный момент тоже далёк от идеала. Учитывая все текущие проблемы кросс-браузерности, за это время выяснились и получилось нижеописанное.

Допустим, что она должна выглядеть примерно так:


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

Определение размеров текста

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

После небольшого исследования выяснилось, что не всегда данный размер возможно получить обычными способами. Будь то методы jQuery, prototype или обычное обращение к параметрам DOM.

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

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

Abyz — выбор элемента в алфавитном указателе

Время на прочтение1 мин
Охват и читатели690
Abyz — javascript-утилита реализующая выбор элемента (буквы) в алфавитном указателе. Основная задача данной утилиты — уменьшить пространство занимаемое списком букв алфавита(ов) и/или уменьшить шрифт элементов списка (дабы «не кидался» этот блок в глаза), при этом сохраняя удобство в выборе любой буквы из данного списка.

Пример, Source

Range, TextRange и Selection

Время на прочтение13 мин
Охват и читатели79K
Многим JavaScript-разработчикам приходилось сталкиваться с объектами, перечисленными в заголовке, например, при решении следующих задач:
— создание визуальных редакторов (wysiwyg),
— поиск в окне браузера,
— выставление BB-кода,
и т.д.

В этой статье автором предпринята попытка собрать перевод документации об этих объектах в одном месте + написать небольшие сопроводительные примеры. Перевод вольный, не дословный, так что если встретите неточность или корявую формулировку — пишите в комментариях.

В целом пост носит справочный характер, и, надеюсь, кому-то упростит разработку.

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

В Сафари сломалось время

Время на прочтение1 мин
Охват и читатели572
Будьте осторожны — сегодня в Сафари сломалась установка кук, видимо в связи с переходом на летнее время. Период жизни кук сокращается ровно на час, а меньше чем на час куки вообще не сохраняются.

Test case:




Проверено в Safari 4 Public Beta (528.16) под Windows.

Кросс-доменные запросы в Opera UserJS

Время на прочтение3 мин
Охват и читатели1.6K
В отличие от расширения Greasemonkey в мозилле, Опера не предоставляет аналога функции GM_xmlhttpRequest для кросс-доменных запросов (XDR). Это, понятное дело, сильно ограничивает возможности и сферу применения UserJS. Используя XDR, например, можно реализовать Last.fm-скробблер для различных онлайн-проигрывателей музыки (типа vkontakte.ru или MySpace).

Однако кросс-доменные запросы можно заставить работать в Опере с помощью трюков с iframe'ами и window.name транспортом. Под катом я покажу как это сделать и предъявлю простую библиотеку, реализующую все колдовство.
Читать дальше →

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

Javascript от А и до…

Время на прочтение3 мин
Охват и читатели3.7K
Начал замечать что на Хабре появляются статьи по программированию, может на это натолкнули фразы типа «хабр уже не тот», но это не так важно, потому как мне это нравится, всегда хотелось узнать что-то новенькое … моя первая статья привела к огромному краху, поэтому почитав людей, я повторю свои усилия и начну цикл заметок о JavaScript от самого начала и до тех пор, пока это будет востребовано =)
поехали дальше

Сравнение производительности браузеров при обработке JSON-строк

Время на прочтение2 мин
Охват и читатели1.7K
imageМы парсим JSON-строку в JSON-объект, когда обрабатываем AJAX-ответы сервера. Обычно, для парсинга JSON-строки мы используем eval или new Function, однако IE8 и Firefox3.1 имеют встроенную поддержку JSON (встроенный парсинг работает значительно быстрее). Как определить на практике выбор между этими тремя методами? И как узнать чья производительность быстрее среди такого большого количества браузеров?
Читать дальше →

Реализация интерфейса ElementTraversal

Время на прочтение8 мин
Охват и читатели2.3K
Достаточно много браузеров (Opera 9.6, Google Chrome 2, Safari 4, Firefox 3.5) обзавелись поддержкой весьма удобного интерфейса ElementTraversal, который позволяет перемещаться по DOM-дереву, игнорируя текстовые узлы. В этих браузерах для каждого элемента стал доступен следующий набор новых getter'ов:
  • firstElementChild — первый дочерний элемент;
  • lastElementChild — последний дочерний элемент;
  • nextElementSibling — следующий соседний элемент;
  • previousElementSibling — предыдущий соседний элемент;
  • childElementCount — количество дочерних элементов.
Читать дальше →

Как я гонял на клаве

Время на прочтение1 мин
Охват и читатели1.1K
Вспомнили на работе про клавогонки. Я немного поиграл, но мои навыки машинистки не дают мне особых шансов )

Зато шансы даёт мой ум — и я им воспользуюсь в полной мере.
Итак, всего-то и необходимо, что знать немного JavaScript, да представлять, как создатели могли защитить своё детище.

Защиты, из тех, что я увидел — это подсовывание левых букв при копировании и подмена русских букв английскими. Естественно я это увидел не с первого раза )

В итоге задача проста: берём слова из источника (благо они так мило выделяются), вставляем по буковке (мы же печатаем) в поле для ввода, не забывая вызывать событие нажатия кнопки (конкретнее — keyup). Не хватает, конечно, возможности ошибаться — но добавить её легко — было бы время. Также не пугает капча, вылезающая при переходе за 500 знаков в минуту — она обходится с помощью знакомых, или помощью того же JavaScript'а.

Ну и да, ещё необходимы Firefox + Firebug :)

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

Используем любой шрифт с Javascript.

Время на прочтение3 мин
Охват и читатели26K
Все мы знаем прекрасные библиотеки sIFR3 и FLIR, которые на лету помогают использовать любой шрифт на веб-страницах.
Правда, с моей точки зрения, их использование (а именно установку и настройку) нельзя считать легким трудом.

Сегодня я расскажу о библиотеке Typeface.js, которая, как видно из названия, работает на чистом JavaScript.

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

Чистый шаблонизатор — PURE

Время на прочтение1 мин
Охват и читатели6.7K
Совсем недавно открыл для себя интересный шаблонизатор под названием PURE.

Им удобно пользоваться, у него хороший сайт, а также поддержка самых разных JavaScript-библиотек (Prototype, jQuery, MooTools, Sizzle, скоро Dojo).
пример использования

Расширяем Sizzle (псевдоселекторы)

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

Введение


Как известно, Джон Резиг (John Resig) создал абсолютно новый движок селекторов под названием Sizzle(selector[, context]).

Его можно использовать как отдельно от jQuery (всего 4Kb в формате min/gzip), так и вместе с ним.

Наряду с большой производительностью он обладает и хорошей расширяемостью, о которой я и хочу сейчас рассказать.
Псевдо-селекторы

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