Библиотечка .
Задумал тут как-то прошерстить свои скрипты, задокументировать все и протестировать. Половина того, что щас получилось, а получилось 100 кБ хорошо задокументированного кода, заменяет 80% jQuery при правильном подходе. Затык разве что с анимацией, не могу придумать лаконичный интерфейс.
Сорцы на гитхабе http://github.com/Kolyaj/CrossJS Если кто-то хочет что-то обсудить/осудить/насрать в каменты -- милости прошу :) Если кто-то баги найдет -- вообще отлично будет. |
Что-то Event маловат... add||remove будут?
|
Там нет Event, там EventObject. on/un в Element.js
|
Вот и я тоже с интерфейсом анимации застрял)
typeof.js Сейчас вот такой typeOf использую в проекте: /** * Определяет тип аргумента * @argument {Mixin} enything Аргумент * @type String * @returns Тип аргумента */ typeOf: function (enything) { if (!arguments.length) { throw "MObj.typeOf: no argument"; } if (enything === null) { return "null"; } if (enything === undefined) { return "undefined"; } return Object.prototype.toString.call(enything).slice(8, -1).toLowerCase(); }, Element.js removeClass: нужно изменять className, если класс был удален. Не заметил ничего наподобие ElementTraversal. |
Цитата:
Цитата:
Цитата:
|
Цитата:
M.removeClass = function(el, cl) { el = $(el); var className = el.className, modified = false; className = className.replace(new RegExp('(^|\\s)' + cl + '(\\s|$)', 'g'), function () { modified = true; return ' '; }); if (modified) { el.className = className; } }; Цитата:
|
Octane,
понятно, спасибо. |
Скачал. Буду смотреть и анализировать.
Спасибо за комменты на русском, а то сейчас у многих наших мода - на инглише все (проблема не глобальная, но время ест). |
Цитата:
|
В закладки!
|
чем этот велосипед лучше?
|
tenshi,
лучше чем что? И лучше для кого? Для меня, очевидно, лучше тем, что я каждую строчку там знаю, и с каждой строчкой согласен. Для тебя, очевидно, ничем. Написан он с расчетом, чтобы писать сложные вещи малым количеством кода. Причем при сборке нужного скрипта можно не просто подключать только нужные файлы, но и только нужные части файлов. Он (велосипед этот) не лучше и не хуже jQuery, он другой. Он предназначен для тех, кто хорошо знает JS, в отличие от jQuery. Но у тех, кто хорошо знает JS, как правило, и так свои наработки есть. Так что эта наработка для ознакомления. Тебе интересно, почему я что-то делаю так, а не иначе? Спрашивай, обсудим. А доказывать что-то кому-то мне не надо, мне абсолютно все равно, будет ли им кто-то пользоваться. |
ты обязуешься поддерживать текущие проекты единолично до конца их дней?
|
tenshi,
тебя это так волнует? Ты собираешься взять на поддержку мои проекты? |
нет, мне хватает своих проектов, оставленных в наследство такими вот недальновидными товарищами =_="
|
Я не делаю сайты на заказ, не волнуйся.
|
а что ты делаешь?
|
|
Цитата:
Показывайте что обещали - неимоверное. :) Насчет библиотеки. Может там быть полезной также функция возвращающая случайное целое число из диапазона включительно ... [start, end]. |
Цитата:
Я как-то постил такое, но сдалаю ещё раз: http://www.kriesi.at/archives/50-web...-of-javascript Посмотри. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
start =< x < end. А может полезней будет такая, что возвращает целые x start =< x <= end. Для работы с массивами, коллекциями, ... |
micscr,
ну да, надо в эту функцию Math.round добавить. |
ой как у вас там в рбс видимо гнило %-) каждый фигачит во что горазд..
|
tenshi,
в некоторых проектах нельзя использовать сторонние фреймворки, т.к. уже через месяц они будут пропатчены вдоль и поперёк. Ты какую мысль-то хочешь донести? |
Цитата:
пока небольшие замечания core.js · вроде extend более распространенное название для функции apply, тем более что так же названа Function.prototype.apply · $$: var elements = $(options.parent || document).getElementsByTagName(selector.split('.')[0] || '*'); createSelectorFilter: tagName = selectorParts[0].toUpperCase() || '*' дублирование кода · getDocumentScroll: return [ win.pageXOffset || doc.documentElement.scrollLeft || doc.body.scrollLeft || 0, win.pageYOffset || doc.documentElement.scrollTop || doc.body.scrollTop || 0 ]; я бы возвращал объект с полями x, y, и в других функциях тоже |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
UPD: кстати, createSelectorFilter где-то еще используется? |
Цитата:
|
tenshi,
давай представим (точнее ты представишь, а я вспомню). Есть чужой сайт, на котором должен работать твой скрипт. Разработчик сайта определил глобальную функцию addEventListener, которая не добавляет обработчики событий к объекту window по той простой причине, что она сама перекрыла оригинальный метод. Ты работаешь с jQuery. Твоя задача повесить набор обработчиков событий на window. |
M.removeClass = function(el, cl) { el = $(el); var className = el.className.replace(new RegExp('\\b' + cl + '\\b', 'g'), ' '); if (className != el.className) { el.className = className; } }; alert('prefix-name other'.replace(/\bname\b/g, ' ')); function random(start, end) { if (arguments.length == 1) { end = start; start = 0; } return Math.random() * (end - start) + start; } Шанс start стремится к нулю, но не равен ему, шанс end == 0. Несимметрично. |
Цитата:
Цитата:
Спасибо за репорт )) |
вот только не надо выдумывать себе проблем ;-) а коли уж замучала параноя, то исполняй свои скрипты в отдельной песочнице
|
tenshi,
это о чём? И что за паранойя? |
Цитата:
|
PeaceCoder,
ты вырвал фразу из контекста. Цитата:
|
Если сильно интересно, то вот тот сайт _http://www.kingsland.ru/
/** * Объявляем и сразу вызываем функции, * чтоб не проверять поддержку методов * каждый раз: */ var addEventListener = function() { // Если браузер IE: if (window.attachEvent) // Возвращаем функцию для IE: return function(element, event, callback) { // Фиксуем callback, чтоб установить правильный // this, и передавать объект события первым параметром: callback.__callbackfix = function() { callback.call(element, window.event); }; // Устанавливаем обработчик (не забываем про "on") return element.attachEvent("on" + event, callback.__callbackfix); } // Если браузер W3C-совместим: if (window.addEventListener) // Возвращаем функцию без фиксов: return function(element, event, callback) { // Последний параметр всегда false, для совместимости с IE: return element.addEventListener(event, callback, false); } }(); |
ну и ? то что ты привел это неграмотная библитека сделанная как раз тем кем я назвал.
фреймворк НЕ должен влиять на параметры тех или инных стандартных методов и/или элементов. Если это происходит - такой ФВ может быть не совместим с другими. На этом основывается мой ФВ. |
Пффф. PeaceCoder, причем тут должен, не должен, Вы еще маме того стороннего разработчика пойдите нажалуйтесь. Ну как ребенок, честно. Вопрос стоит так -- как на уже готовый сайт добавить новый функционал, не переделывая старый под угрозой получения в глаз. И вот тут мы можем ВНЕЗАПНО увидеть подобное тому, что написал Kolyaj.
|
Часовой пояс GMT +3, время: 06:40. |