Подтвердить что ты не робот

__doPostBack - undefined в IE11

Используя готовое управление asp HyperLink, IE 11 сообщает об ошибке SCRIPT5009: __doPostBack - это undefined со ссылкой на ссылку: http://msdn.microsoft.com/en-us/library/ie/xyf5fs0y(v=vs.94).aspx

Это видно в окне консоли F12 devtools.

Кто-нибудь сталкивался с этим еще и есть ли исправление? Это производственная среда.

ИЗМЕНИТЬ: Применение исправления http://support.microsoft.com/kb/2600088 не работало для меня, и IE 10 в Windows 8 отлично работает.

Существует более поздняя статья Скотта Гензельмана с обновленной информацией. http://www.hanselman.com/blog/IE10AndIE11AndWindows81AndDoPostBack.aspx Я попытаюсь выполнить эти исправления и обновить этот вопрос, но это, похоже, изолировано от окон 8.1 и IE11.

4b9b3361

Ответ 2

После одной и той же проблемы в течение нескольких дней мы столкнулись с этим решением:

http://connect.microsoft.com/VisualStudio/feedback/details/806542/fix-internet-explorer-11-not-detected-correctly-by-net-4-0-framework-when-custom-browser-files-are-used.

Добавить новый .browser файл в папку App_Browsers; мы назвали файл "IE11.browser", и если папка App_Browsers не существует, создайте его.

Затем мы просто скопировали тело из ссылки выше в вновь созданный файл, перераспределили, и теперь больше нет ошибки _doPostBack.

Тело файла выглядит следующим образом:

<browsers>
<browser id="IE11" parentID="Mozilla">
  <identification>
    <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
    <userAgent nonMatch="IEMobile" />
  </identification>
  <capture>
    <userAgent match="Trident/(?'layoutVersion'\d+)" />
  </capture>
  <capabilities>
    <capability name="browser"             value="IE" />
    <capability name="layoutEngine"         value="Trident" />
    <capability name="layoutEngineVersion" value="${layoutVersion}" />
    <capability name="extra"                value="${extra}" />
    <capability name="isColor"             value="true" />
    <capability name="letters"             value="${letters}" />
    <capability name="majorversion"         value="${major}" />
    <capability name="minorversion"         value="${minor}" />
    <capability name="screenBitDepth"     value="8" />
    <capability name="type"                 value="IE${major}" />
    <capability name="version"             value="${version}" />
  </capabilities>
</browser>

<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->
<browser id="IE110" parentID="IE11">
  <identification>
    <capability name="majorversion" match="11" />
  </identification>

  <capabilities>
    <capability name="ecmascriptversion"    value="3.0" />
    <capability name="jscriptversion"     value="5.6" />
    <capability name="javascript"         value="true" />
    <capability name="javascriptversion"    value="1.5" />
    <capability name="msdomversion"         value="${majorversion}.${minorversion}" />
    <capability name="w3cdomversion"        value="1.0" />
    <capability name="ExchangeOmaSupported" value="true" />
    <capability name="activexcontrols"     value="true" />
    <capability name="backgroundsounds"     value="true" />
    <capability name="cookies"             value="true" />
    <capability name="frames"             value="true" />
    <capability name="javaapplets"         value="true" />
    <capability name="supportsCallback"     value="true" />
    <capability name="supportsFileUpload" value="true" />
    <capability name="supportsMultilineTextBoxDisplay" value="true" />
    <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
    <capability name="supportsVCard"        value="true" />
    <capability name="supportsXmlHttp"     value="true" />
    <capability name="tables"             value="true" />
    <capability name="supportsAccessKeyAttribute"    value="true" />
    <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
    <capability name="vbscript"             value="true" />
  </capabilities>
</browser>
</browsers>

Нам не нужно обновлять нашу версию .Net от 4 до 4.5, и теперь все работает так, как должно быть.

Надеюсь, это поможет кому-то с такой же неприятной проблемой!

Ответ 3

Поместите ниже script на главной странице, это обязательно исправит. У меня была аналогичная проблема, и она была исправлена.

<script runat="server">

protected override void OnInit(EventArgs e)
{
Page.ClientTarget = "uplevel";
base.OnInit(e);

}
</script> 

Ответ 4

Установка Framework 4.5 на нашем сервере требует прохождения через болото красной ленты и заполнения форм, поэтому вот что я сделал:

Перейти на сайт: http://blogs.telerik.com/aspnet-ajax/posts/13-12-19/how-to-get-your-asp.net-application-working-in-ie11

Найдите ссылку для загрузки пользовательского файла .browser с помощью исправления IE11.

Сохраните файл telerik_ie11_browser_file_fix.zip на свой компьютер и разархивируйте Telerik_IE11_fix.browser

Скопируйте Telerik_IE11_fix.browser на путь целевого сервера в C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers

Выполните следующие команды на своем сервере (увидели его в блоге hanselman fix) cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319 (или любая версия каркаса, используемая вами)

Запустить C:\Windows\Microsoft.NET\Framework64\v4.0.30319 > aspnet_regbrowsers -i

Запустите iisreset на вашем сервере

Ответ 5

По существу, происходит то, что есть 2 отсутствующих скрытых элемента html "eventtarget" и "eventargument", а также отсутствующую функцию "__doPostBack".

Они отсутствуют в DOM.

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

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) { object
    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, это может быть простое решение, в отличие от возможных новых ошибок, созданных при обновлении вашей платформы.

Ответ 6

Добавление конфигурационного файла браузера в App_Browsers (см. выше для XML) в Windows 2008 с IIS 7.5 работает для IE 11. На предыдущем сайте мы сделали что-то еще, но это намного проще.

Ответ 7

Ни одно исправление не работало для меня, ни обновление файла ie.browser. Я нахожусь на Windows Server 2008 R2.

Единственное решение, которое работало (помимо обновления до .net 4.5), - это добавление script, предложенное @vishal в этом потоке.