2013-03-07 2 views
31

У меня возникла проблема с IE10 с элементами управления ASP.NET, для чего требуется JavaScript post back [like, link button].IE10 SCRIPT5009: '__doPostBack' не определено

Правильно работает над версией IE9, а также в режиме совместимости с IE10. Но в стандартном режиме IE10 он дает ошибку ниже. SCRIPT5009: «__doPostBack» не определен

[Я создал демо-проект с простой осиной:. Кнопка ссылки, которая перенаправляет на другую страницу] IE10_error screen

Tried the solution, but didn't work for me

Можно ли предложить исправить это ?

+0

Эти темы также заслуживают чтения, особенно для исправления файла «.browser» на стороне сервера! http://stackoverflow.com/questions/18485339/dopostback-failing-in-ie-11-windows-8-1 и http://stackoverflow.com/questions/19915720/dopostback-is-undefined-in-ie11 – AFract

ответ

50

По-видимому, в файлах определения браузера, которые поставляются с .NET 2.0 и .NET 4, есть ошибка. Файлы определения не поддерживают IE10 как версию браузера и, следовательно, по умолчанию используют определение по умолчанию, которое не поддерживает JavaScript ,

Скотт Hanselman имеет очень подробную рецензию об этой проблеме здесь: http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

Скотт предлагает два решения, с первым из которых являются рекомендуемым:

1. Машины для всей затруднительного Скачать и установить исправление на сервере:

2. Сайт только исправить Установите App_BrowsersUpdate пакет из NuGet на свой веб-сайт, чтобы импортировать новую ИЭ и определение браузера Firefox.

+0

Где установить пакет (Исправить только сайт) - на стороне сервера или на компьютере, где скомпилирован код? –

+0

Исправление должно быть установлено на веб-сервере, обслуживающем веб-сайт, то есть в условиях вашего вопроса, на стороне сервера, а не на машине, где скомпилирован код. Последнее просто ваша среда разработки. – Hady

+15

.NET не распознает IE10? Бит неудачи эй .. –

1

Если вы испробовали исправление, и вы по-прежнему видите ошибку в IE11, обновление .net framework до 4.5 будет работать.

0

Суть в том, что существует 2 отсутствующих скрытых элемента html «eventtarget» и «eventargument», а также отсутствующая функция «__doPostBack».

Данные отсутствуют в DOM.

Я пробовал все исправления, перечисленные для этого, и никто не работал.Однако при использовании комбинации jquery и javascript существует ненавязчивое решение. Добавьте это в свой javascript на готовый документ, и вы отправитесь на гонки (это гораздо более быстрая альтернатива, чем установка .net framework 4.5 на вашем сервере, хотя, если вы можете установить 4.5, это путь):

if ($('#__EVENTTARGET').length <= 0 && $('#__EVENTARGUMENT').length <= 0) { 
    $('#YOUR_ASPNET_FORMID').prepend('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />'); 
} 

if (typeof __doPostBack == 'undefined') { 
    __doPostBack = function (eventTarget, eventArgument) { 
    var theForm = document.forms['YOUR_ASPNET_FORMID']; 
    if (!theForm) { 
     theForm = document.YOUR_ASPNET_FORMID; 
    } 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
    }; 
} 

Я понимаю, что некоторые из указанных установок 4.5 исправляют это. Я определенно рекомендовал бы это. Однако, если вы похожи на меня, работая на общедоступном веб-сайте предприятия с системой cms, испеченной в .net 4, это может быть просто более простым решением, в отличие от возможного появления новых ошибок, созданных при обновлении вашей платформы.

+0

Я получаю неопределенную ошибку «объект». Что может быть причиной этого? Должен ли я просто взять его? – ClosDesign

+0

Когда я понял это, вся страница сломалась. Какие-либо предложения? – ClosDesign