2009-11-30 2 views
0

У меня есть сценарий, когда браузер Internet Explorer Explorer 6 клиента не позволяет создавать экземпляры элементов управления activex, чтобы рендеринг ajax был неработоспособным в jquery.Определите, возможно ли AJAX?

Это также выводит предупреждение в верхней части браузера пользователя.

Есть ли все-таки, чтобы обнаружить, что ActiveX доступен без каких-либо предупреждений для пользователя? Я хотел бы использовать ajax, если он доступен, но я хотел бы, чтобы функция деградировала до классического сообщения формы, если объект не может быть создан.

+3

сообщили ли вы об этой ситуации через телеграмму? – nickf

+0

Я не могу с собой поделать, у меня были повторяющиеся приступы громкого смеха об этом комментарии за последние 9 часов, и я все еще не могу остановиться. –

ответ

8
var xhr; 
if (window.XMLHttpRequest) { 
    xhr = new XMLHttpRequest(); 
} 
else if (window.ActiveXObject) { 
    try { 
     xhr = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch(err) { 

    } 
} 
else { 
    //It couldn't find any of those Ajax objects 
} 

if(!xhr) { 
    //Here you know now that Ajax is not possible with this client 
} 

Это простая реализация. Там есть лучшие.

Update:

Try ... Catch предложил JasonWyatt. Я пропустил это.

+4

Возможно, вы захотите попробовать/поймать вызов «нового объекта ActiveXObject» в случае, если это исключение, когда JS пытается создать такой объект ... – JasonWyatt

+0

появляется !! window.ActiveXObject истинно, когда я вручную поворачиваю activex в настройках безопасности – Dave

+0

+1 для подсказки. – Tebo

0

Примечание: Возможно, вы захотите иметь откат, который не требует javascript, используя тег <NoScript>.

Кроме того, это напомнило мне об bad example from The Daily WTF.

+0

Я использую jquery, чтобы скрыть все материалы для публикации в форме руководства, если у них нет javascript, тогда исходная форма остается неповрежденной – Dave