Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отложить вызов функции на 1 сек, после того как пользователь ввел текст 
V
    Опции темы
Zeroglif
Дата 27.7.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



AKS

Если language пришёл третьим аргументом его бы надо пропустить в родной таймаут. Вместо !aFunc.apply лучше !Function.prototype.apply. Проверка на [native code] мне кажется лишней/непредсказуемой, может всё-таки обезопасить себя не переопределением родного/чужого setTimeout-а, а созданием своего (отдельно лежащего) метода (как у stchur-а) на свой объект. Строгое равенство при сравнении с typeof aFunc - масло масляное. Не хотите проверить на неравенство сo 'string', чем равенство с 'function' , у IE некоторые методы типа 'object', да и в разных браузерах может быть по разному. Где итерация и где return из func я бы записал всё в одну строку тернарным..., легче будет читать...

Ещё, чуть не забыл, аргументы для eval лучше бы собрать в строку, !!!не стоит полагаться на массив.

AKS, +1

Добавлено @ 11:42
Цитата(Diesel Draft @  27.7.2007,  10:50 Найти цитируемый пост)
settimeout();

Лучше SETtimeOUT();  smile 

Это сообщение отредактировал(а) Zeroglif - 27.7.2007, 12:04
PM MAIL WWW   Вверх
AKS
Дата 27.7.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



О-о-о, спасибО!
Цитата(Zeroglif @  27.7.2007,  11:36 Найти цитируемый пост)
Если language пришёл третьим аргументом его бы надо пропустить в родной таймаут.

Точно, так и надо! Сделаю!

Цитата(Zeroglif @  27.7.2007,  11:36 Найти цитируемый пост)
Вместо !aFunc.apply лучше !Function.prototype.apply.

А вот это не понял - чем лучше?

Цитата(Zeroglif @  27.7.2007,  11:36 Найти цитируемый пост)
Проверка на [native code]...

Т.е. где-нибудь может и по-другому выглядеть нативный body? Вот хотелось бы, конечно, не так, как у Стива. "Заманчивей" выглядит так, как сейчас, хотя если делать по-серьезному, типа безопасней ("по-взрослому"), то надо так, как Вы пишите.

Цитата(Zeroglif @  27.7.2007,  11:36 Найти цитируемый пост)
...масло масляное

Сделаю "постным". smile

Цитата(Zeroglif @  27.7.2007,  11:36 Найти цитируемый пост)
Не хотите проверить на неравенство сo 'string'...

Уже хочу - переделаю.

Цитата(Zeroglif @  27.7.2007,  11:36 Найти цитируемый пост)
я бы записал всё в одну строку тернарным...

Ну и я тогда также сделаю.

Цитата(Zeroglif)

...!!!не стоит полагаться на массив

Ух, а что не так с массивом?

P.S. 
Чуть позже отредактирую функцию там, где она уже есть (новых сообщений делать не буду).


Это сообщение отредактировал(а) AKS - 27.7.2007, 12:13
PM MAIL   Вверх
AKS
Дата 27.7.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Zeroglif, надоело Вам тут уже в одной теме наверно, но я все же еще побеспокою, поскольку вопросец назрел серьезный. 
Вы говорите "у IE некоторые методы типа 'object'", и вместо равенства с 'function' выбрать 'string'. А как же тогда быть, если кто-нибудь сунет что-то без [[Call]]? Поместить вызов в try/catch?

P.S. 
А может на предмет "передана ли исполняемая процедура?" проверять как-нибудь по такому принципу:
Код

/function/.test(alert)

?
Да тут еще с этими 'object' выясняется, что проверка на !aFunc.apply просто необходима...
Код

window.setTimeout(alert, 1000, 'Нету ведь apply!');

Как-то так, пока:
Код

        if (typeof (aFunc) == 'string' || check) {
            func = aFunc;
        } else if ((typeof (aFunc) == 'function' ||
                typeof (aFunc) == 'object' &&
                /function/.test(aFunc)) && len > iter)


Это сообщение отредактировал(а) AKS - 27.7.2007, 13:29
PM MAIL   Вверх
Zeroglif
Дата 27.7.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(AKS @  27.7.2007,  12:48 Найти цитируемый пост)
Поместить вызов в try/catch?

Зачем? Пусть ошибки лезут. Не суй в другой раз.  smile 

Цитата(AKS @  27.7.2007,  12:10 Найти цитируемый пост)
чем лучше?

aFunc имеет полное право тащить на себе левое свойство applyFunction.prototype - тоже, но там скорее всего или не будет ничего вообще, или будет уже готовая эмуляция.

Цитата(AKS @  27.7.2007,  12:10 Найти цитируемый пост)
что не так с массивом?

toString может быть некачественно реализован или переопределён.
PM MAIL WWW   Вверх
AKS
Дата 27.7.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Так, ясненько! Смотрите, как прикольно получается:
Код

window.setTimeout(window.open, 1000, 'about:blank', '', 'width=300,height=300');

!!! smile
Как же "присобачить" к возвратному значению ссылку на новое окно? В принципе, вернуть-то можно что угодно. smile Надо ли? Народ "засмущается" - вместо ссылки на id таймера вылезет у меня какой-нибудь объект, обвешанный всякими returned value. smile

Добавлено @ 13:47
Цитата(Zeroglif @  27.7.2007,  13:35 Найти цитируемый пост)
aFunc имеет полное право тащить на себе левое свойство apply

Так, раз такое дело, то тогда так, наверно:
Код

 bool = !(Function.prototype.apply && typeof (aFunc) == 'function')
// или Function.apply - чтоб короче



Это сообщение отредактировал(а) AKS - 27.7.2007, 13:48
PM MAIL   Вверх
Zeroglif
Дата 27.7.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(AKS @  27.7.2007,  13:42 Найти цитируемый пост)
Как же "присобачить" к возвратному значению ссылку на новое окно?

Никак. И не нужно. Хочешь получить ссылку на окно - запускай хостовый метод так, чтобы поймать всё, что нужно (через свою функцию).
PM MAIL WWW   Вверх
smartov
Дата 27.7.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Цитата(Zeroglif @  27.7.2007,  12:56 Найти цитируемый пост)
запускай хостовый метод так, чтобы поймать всё, что нужно (через свою функцию). 

Отож. Балакали балакали...
PM MAIL   Вверх
AKS
Дата 27.7.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(Zeroglif @  27.7.2007,  13:56 Найти цитируемый пост)
И не нужно.

Ну и хорошо - ничего лишнего, здоровая умеренность во всем! smile
Вот как же быть с проверкой [native code] - хочется ведь получить родной метод или прервать выполнение кода...

Отредактировал функцию на 2-ой стр. (27.7.2007, 18:39).

Это сообщение отредактировал(а) AKS - 27.7.2007, 18:44
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1196 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.