0

Эта функция вызывается, когда AJAX-запросы readyState == 3,Reverse Ajax обнаружения responseText

function(context, xhrobj, itself){ 
    //Test if context.responseText is available here. 

    var text = context.responseText; 
    //Do stuff 
} 

Как бы я быть в состоянии проверить, если context.responseText доступен? Сейчас я делаю это,

if ($.browser.msie) return false; 

Но я действительно не хочу, чтобы сделать обнаружение браузера, Есть ли способ, чтобы обнаружить, если context.responseText является unavailabe? В частности, для IE7/8 я не поддерживаю 6 или ниже.

Я попытался,

if('responseText' in context) return false; 

, который не работает, потому что это в контексте, просто не доступны, и

try{context.responseText;} catch(x){return false;} 

, но это, кажется, как взломать.

+0

Я просто пойти с последним 'Try/catch' один вы перечислили. Это похоже на хак, конечно, но это то, что иногда заставляют вас делать браузеры. Кроме того, 'readyState == 3' можно вызвать несколько раз, если я правильно помню. Почему бы вам не подождать до 4? –

+0

Это комета, я нажимаю json, но не закрываю соединение, поэтому я могу многократно пересылать данные в браузер, прежде чем перезапустить connecton. – Andrew

+0

способ 'try/catch' не кажется таким взломанным для меня (не то, что я авторитет по этому вопросу) ... я думаю, что это хорошее решение вашей проблемы – davin

ответ

0

Контекст не инициализировал объект ответа, будь то текст, xml. Поэтому, если вы не реализуете своего рода наблюдателя для фактического создания/инициализации/совокупности ответа, вторая попытка ... catch, похоже, делает то, что вам нужно для этого. Это не взлом, поскольку context.responseText не создан и поэтому не инициализирован.

Я продолжу следить за этой нитью, но я думаю, что ИМХО ваш подход уместен.

удачи,

Джош

+0

Я называю это взломом, потому что я не верю в использование оператор catch для обычного потока программы, но это просто семантика. Поскольку я - новый разработчик js, я надеялся, что есть еще один более чистый способ обнаружения уязвимости IE :), спасибо за подтверждение. – Andrew

Смежные вопросы