![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
ProgramerForever |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 1 Всего: 5 |
Добрый день, уважаемые участники форума.
Задача такая: Есть стандартный вызов функции через setTimeout:
Необходимо остановить все потоки, вызванные этой функцией. Вообще для этого есть функция clearTimeout(id), где id - идентификатор потока, который получается так:
Но доступа к странице у меня, естественно, нет, поэтому и id мне недоступен напрямую. Вопрос: Как остановить потоки, или как добраться до id потоков? |
||||
|
|||||
Amphiluke |
|
|||
![]() ☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Если идентификатор таймера не сохранялся в глобальную переменную, то получить его из кода глобального уровня не получится никак… кроме тупого перебора.
![]() То есть, ИМХО, остается только воспользоваться тем фактом, что метод setTimeout всегда возвращает значение типа Number, которое в «обычных» условиях вряд ли будет больше, скажем, пары тысяч. ![]() Это сообщение отредактировал(а) Amphiluke - 8.1.2012, 21:37 |
|||
|
||||
ProgramerForever |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 1 Всего: 5 |
Обнадёживает, ага. Всё равно спасибо, попробую брутфорсом.
|
|||
|
||||
Amphiluke |
|
|||
![]() ☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Возможно, более подходящим способом будет (временно) переписать callback функцию, которая вызывается таймером?
Это сообщение отредактировал(а) Amphiluke - 9.1.2012, 11:48 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
ProgramerForever,
А о чем вообще вопрос? Некто, в недоступном участке страницы с маниакальным упорством понапихал вызовов setTimeout(time,1000); К рассматриваемому моменту, к примеру, setTmeout вызвался 10 раз и прямо сейчас вызывается time первый раз. Автор функции time не желает, чтобы функция вызывалась оставшиеся 9 раз из этого цикла? Почему бы не завести глобальную переменную, в которой проставить время последнего вызова и проверять это время при вызове функции?
Правильно, конечно, будет открутить руки маньяку и написать свою собственную функцию установки таймаута, которая сохраняет в нужном месте идентификатор от setTimeout. Это сообщение отредактировал(а) ksnk - 9.1.2012, 12:55 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ProgramerForever |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 1 Всего: 5 |
Amphiluke, сработал вот такой код:
Всем спасибо. |
|||
|
||||
Amphiluke |
|
|||
![]() ☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
ProgramerForever, советую вам пообновлять страничку раз семь-десять. Во многих браузерах id-шники таймеров после обновления страницы не начинают нумерацию с начала, как при первом открытии страницы, а продолжают нумерацию, начатую еще при первом открытии страницы. Так что id-шники запросто могут «ускакать» далеко за сотню.
Вот пример для тестирования:
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |