← All posts tagged JS

Xanf
JS работа Один из пунктов за которые разработчики будут гореть в аду:
— создание объекта ради побочных эффектов:

...
// Add pointer
Core.Sessions.add(this);
// Create UI
new GUI.Session(this);
// Load all referenced data
Xanf
JS ($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_) — вполне себе валидный JS-код. Делает alert(1)
Xanf
JS работа Прошла вторая неделя, как человек под моим началом разбирается с node.js. Пока все очень нравится — очень логичная платформа, неплохая дока, удобно программировать всякие событийные системы, работает ооооочень быстро. Из минусов — мелкие проблемы с IDE для человека, я то пользую VIM + прикрученный JsLint + парочка скриптов для удобной отладки, а вот человеку приходится ваять в эклипсе, где почему-то не работает нормальное автодополнение для js
Xanf
JS Который день брожу вокруг ExtJS и почему-то интуиция протестует против него. С другой стороны вменяемых альтернатив вроде бы как и нету
Xanf
JS работа Смерть фаербага ровно посреди файла (для непосвященных — отсутствие зеленых циферок говорит о том что Firebug не считает/не видит этот код как исполняемый)

Xanf
JS работа Firebug почему-то напрочь отказывается дебажить мой 100000-срочный JS. После 50000 строчки брекпойнты не срабатывают принципиально. А бага когда все по отдельным файлам не проявляется. Пойдем заюзаем Developer Tools Хрома
Xanf
JS работа Packer ужимает 800кб кода, получившегося на выходе от Google Closure Compiler до 500 кб., что весьма и весьма. Вот только всё-таки в боевую версию включать я его наверное не буду, потому что:
а) он делает это за полчаса на моей машине
б) я представляю как будет тормозить eval 500кб фрагмента у клиента
Xanf
jQuery ненависть JS работа Есть таблица. Задача простейшая, состоящая из двух частей — первая. При щелчке по чекбоксу в строке таблицы — скрывать-показывать элементы на карте, по щелчке на строку таблицы — поднимать/опускать флажок (для удобства). Ну, пишем наивный код:

onRowClick = function () {
$(this).find("input.checkbox-units").click();
};

onCheckboxClick = (function (collection) {
return function (event) {
var unitId = $(this).attr("name");
collection.objects[unitId].setVisibility($(this).attr("checked") ? true : false);
event.stopPropagation();
};
}(this.collection));

(замыкание тут нужно чтобы сохранить доступ к this.collection в хендлере). Так вот. При щелчке по чекбоксу все прекрасно — поднимается флажок, вызывается хендлер, объект показывается. А вот при щелчке по строчке вначале вызывается обработчик событий click() (=onCheckboxClick) и только потом поднимается/опускается сам флажок. В итоге при щелчке по строке таблицы события работают "в противофазе" :)