powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Chrome setInterval не работает
9 сообщений из 9, страница 1 из 1
Chrome setInterval не работает
    #38171002
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Никто не сталкивался с проблемой, что setInterval в хроме не отрабатывает?
Да да, просто не отрабатывает и все, т.е. ни разу не вызывается:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function initializeAjaxPushListener() {
    setTimeout(makeAjaxPushRequest, 5000);
}

function makeAjaxPushRequest() {
    alert(11)
    setTimeout(makeAjaxPushRequest, 5000);
}



Причем то работает то не работает. В FF, например, все стабильно вызывается.
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171009
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
setInterval или setTimeout ?
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171010
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

Прошу прощение, я имел ввиду setTimer
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171013
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter,

Блин, что такое сегодня, setTimeout
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171026
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это какой-то опрос сервера посредством ajax ?
а сервер всегда корректно отвечает?
гляньте фиддлером
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171049
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганельэто какой-то опрос сервера посредством ajax ?
а сервер всегда корректно отвечает?
гляньте фиддлером

Вы правы, в идеале там выполняется jQuery.ajax({...}), сервер отвечает, но дело не в сервере.
Дело в том, что makeAjaxPushRequest просто не вызывается и все, т.е. я там alert(11) поставил чтобы проверить, так вот alerta нет.
я переписал несколько код, стал дожидаться загрузки документа:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function initializeAjaxPushListener() {
    jQuery(document).ready(function () {
        alert(1)
        setTimeout(makeAjaxPushRequest, 5000);
        alert(2)
    })
}

function makeAjaxPushRequest() {
    alert(11)
    setTimeout(makeAjaxPushRequest, 5000);
}




в результате мы видим два алерта: 1 и 2
но 11 не вызывается ни через 5 секунд ни потом. Причем это не постоянное поведение, ошибка проявляет себя где-то в 50 процентах. JS ошибок на страничке нет. Бред какой-то...
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171065
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может есть какой-нибудь аналог, который можно было бы использовать вместо setTimeout,
что-нибудь в jQuery?
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171098
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter,

Кажется я разобрался. Под хромом нумерация таймеров начинается с 1.
т.е. первый вызов на страничке alert(setTimeout(...)) вернет 1, второй 2, 3 и т.д.

в FF же нумерация почему-то начинается с 2, минуя 1.

Сдается мне что какой-то левосторонний яваскрипт тупо вызывает clearTimeout(1) (страничка работает в рамках фреймворка JSF IceFaces, так что не всегда понятно что там за javascript еще помимо нашего выполняется).

Вообщем в итоге я попробовал сделать так:
var toId = setTimeout(...)
clearTimeout(toId).
setTimeout(...)

т.е. пропустил первый таймер.

И все сразу стало работать.
...
Рейтинг: 0 / 0
Chrome setInterval не работает
    #38171444
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterrabiter,

Кажется я разобрался. Под хромом нумерация таймеров начинается с 1.
т.е. первый вызов на страничке alert(setTimeout(...)) вернет 1, второй 2, 3 и т.д.

в FF же нумерация почему-то начинается с 2, минуя 1.

Сдается мне что какой-то левосторонний яваскрипт тупо вызывает clearTimeout(1) (страничка работает в рамках фреймворка JSF IceFaces, так что не всегда понятно что там за javascript еще помимо нашего выполняется).

Вообщем в итоге я попробовал сделать так:
var toId = setTimeout(...)
clearTimeout(toId).
setTimeout(...)

т.е. пропустил первый таймер.

И все сразу стало работать.

Может в таком случае выкинуть "фреймворк JSF IceFaces" )) Просто такое нездравое поведение - это ненормально. Или ты в чём то ошибся, или авторы не подумали о совместимости с другим кодом.

Вот например гугловцы. У них есть насколько я знаю 2 ограничения: их код всегда первый на странице и стандартный объект не должен расширяться. Вот это здраво.
Просто если фреймворк сам удаляет таймеры по номеру - он и анимацию любую прервать может, и что угодно ещё испортить). И не факт, что он объекты стандартные не расширяет, а это возможная ошибка при работе с гугл-приложениями (ну и т.д.)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Chrome setInterval не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]