В среду система AJAXy CRM, которую я поддерживаю, для многих пользователей была нарушена, поскольку Firefox начал сообщать: "Использование атрибута тайм-аута XMLHttpRequest не поддерживается в синхронном режиме в контексте окна". Другие основные браузеры все еще работают нормально, так как обходной путь я посоветовал людям не использовать Firefox.
Из того, что я понимаю, синхронные запросы - это Bad Thing, поэтому я могу только предположить, что последнее обновление для Firefox остановило его от размещения Bad Things. Все предыдущие обсуждения (здесь и в Интернете) подразумевают, что использование атрибута тайм-аута с синхронными объектами XMLHttpRequest не должно работать вообще, что заставляет меня задаться вопросом, почему он, по-видимому, делает (за исключением Firefox со среды).
Являются ли другие браузеры/старый Firefox фактически реализацией времени ожидания, когда они "не должны", или просто игнорируют исключение и продолжают выполнение (а не спасаются, как новый Firefox)?
EDIT: я не могу получить код прямо сейчас, но это было так:
if (c.somekindoftimeouthandler !== "unassigned" && this.timeout) {
где 'this' возникает сложная вещь, предположительно унаследованная от XMLHTTPRequest, а "c" - это конкретный объект, ссылающийся на конкретный запрос AJAX или что-то в этом роде. Я приду чисто, я мало знаю об обоих Javascript и этом специфическом CRM на основе сахара, но суть кода проста. Это был универсальный объектно-ориентированный способ подачи запросов, и этот конкретный 4-строчный или около того имел дело, когда запрос был истек. У меня создается впечатление, что это была абстрактная база, из которой должны были специализироваться конкретные запросы (или запрашивающие сущности). Двигатель Javascript Firefox зажимается на
c.timeout = this.timeout
//more stuff about the handler etc...
}this.timeout
.
Я полагаю, что мой вопрос более общий, хотя, учитывая "плохость" использования тайм-аута для синхронизации XHR, как различные браузеры справляются с этим?