Библиотечка .
Задумал тут как-то прошерстить свои скрипты, задокументировать все и протестировать. Половина того, что щас получилось, а получилось 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, время: 22:47. |