Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   ExtCanvas - мой маленький "фреймворк" (https://javascript.ru/forum/project/17722-extcanvas-mojj-malenkijj-frejjmvork.html)

monolithed 26.06.2011 09:56

Цитата:

Сообщение от Shock
Зачем в Canvas-фреймворке костыли для IE, если даже с ними там ничего не заработает?

ну так, нас не только товарищ DNemo/DreamTheater читает, есть еще аудитория тех кто учатся писать под IE:
['mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'click'].join().search('mousemove') === -1;
//либо так:
'mouseover, mouseout, mousemove, mousedown, mouseup, click'.search('mousemove') === -1;

для тех, кто не знает как реализовать Array.indexOf():
(function($) {
    if(!$.indexOf) {
        $.indexOf = function(object) {
            var length = this.length -1, i = 0;
            while(++i <= length) {
                if(i in this && this[i] === object) {
                    return i;
                }
            }
            return -1;
        };
    }
})(Array.prototype);


Shock, у вас все проекты ориентированные на IE9+?

DNemo/DreamTheater, что за событие mouseclick?

Kolyaj 26.06.2011 10:20

Цитата:

Сообщение от monolithed
для тех, кто не знает как реализовать Array.indexOf():

Вы реализовали lastIndexOf.

monolithed 26.06.2011 10:34

Цитата:

Сообщение от Kolyaj
Вы реализовали lastIndexOf.

ага, забыл -1 дописать))

Riim 26.06.2011 12:17

Цитата:

Сообщение от monolithed
ага, забыл -1 дописать))

совсем плохо стало:
1. по прежнему lastIndexOf.
2. возможен бесконечный цикл (если массив пустой).
3. никогда не находит совпадение в последнем элементе ( alert([2, 1].indexOf(1));// -1 ).

Без поддержки второго аргумента (from) у меня получается так:
if (!('indexOf' in arrayProto)) {
	arrayProto.indexOf = function(item) {
		for (var i = 0, l = this.length; i < l; i++) {
			if (this[i] === item) return i;
		}
		return -1;
	};
}

Kolyaj 26.06.2011 12:37

Цитата:

Сообщение от monolithed
ага, забыл -1 дописать))

Нет, с вами сыграла злую шутку привычка оптимизировать то, что не тормозит. Массив нужно перебирать с начала.

monolithed 26.06.2011 12:51

Цитата:

Сообщение от Kolyaj
Нет, с вами сыграла злую шутку привычка оптимизировать то, что не тормозит. Массив нужно перебирать с начала.

Для меня просто работает поговорка: "Поспешишь, людей насмешишь", особенно когда только проснулся))

DreamTheater 26.06.2011 13:23

Цитата:

Сообщение от monolithed (Сообщение 110539)
DNemo/DreamTheater, что за событие mouseclick?

Событие mousedown вызывается когда кнопка мыши нажимается над объектом, mouseup - когда отпускается. А mouseclick срабатывает только если кнопка была нажата и отпущена над одним и тем же объектом.

monolithed 26.06.2011 13:29

Цитата:

Сообщение от DreamTheater
А mouseclick срабатывает только если кнопка была нажата и отпущена над одним и тем же объектом.

может все-таки click, а не mouseclick?

DreamTheater 26.06.2011 13:36

Цитата:

Сообщение от monolithed (Сообщение 110563)
может все-таки click, а не mouseclick?

Да, именно так :)

monolithed 26.06.2011 13:44

Цитата:

Сообщение от Riim
Без поддержки второго аргумента (from)

видимо как-то так, должно быть:
(function($) {
    if(!$.indexOf) {
        $.indexOf = function(object) {
            var length = this.length, i = arguments[1] || 0;
            i =  Math[i < 0 ? 'ceil' : 'floor'](i) - 1;
            //для отрицательных индексов
            if(i < 0) i += length;

            while(++i <= length) {
                if(i in this && this[i] === object) {
                    return i;
                }
            }
            return -1;
        };
    }
})(Array.prototype);


Часовой пояс GMT +3, время: 14:47.