2013-11-11 3 views
13

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

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

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

EDIT: Применение исправления http://support.microsoft.com/kb/2600088 не работает для меня, и IE 10 на Windows 8 прекрасно работает.

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

+4

Возможный дубликат [IE10 SCRIPT5009: '\ _ \ _ doPostBack' не определен] (http://stackoverflow.com/questions/15273618/ie10-script5009-dopostback-is-undefined) – Mgetz

+3

новый браузер .... тот же ошибка – Mgetz

+0

Я согласен, что это дубликат. Я попробую исправления и подтвержу. – plntxt

ответ

3

Установка .NET Framework 4.5 на ваш веб-сервер должна решить эту проблему.

http://www.microsoft.com/en-gb/download/details.aspx?id=30653

В качестве альтернативы, если вы не можете установить .NET Framework 4.5 есть исправление Microsoft для IE11: http://support.microsoft.com/kb/2836939 (Спасибо @Afract за комментарий)

+3

Немного предыстории - возможно, это исправило бы его для меня, но я открыл ящик Пандоры, когда установка .NET 4.5 потерпела неудачу из-за некоторой неясной проблемы RSA на моих серверах. Короче говоря, для этого потребовались две новые серверные сборки и три недели моей жизни. – plntxt

+1

@ Похоже, это случилось и с нами. Просто использование режима сеанса и аутентификации с помощью UseCookies не работает. Вы должны установить совершенно новую версию Framework! Однако - он отлично работает в режиме разработки с IE11 с фреймворком 4 – DipakRiswadkar

+3

Для тех, кто не может установить FW4.5.2, есть исправление MS, нацеленное на IE11: http://support.microsoft.com/kb/2836939/ – AFract

0

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

+1

Пожалуйста, не делайте этого. Случается, что IE11 не распознается Asp.net как современный браузер из-за того, что пользовательский агент изменился. Если вы хотите исправить это без установки .net 4.5 на сервере, вам необходимо включить файлы браузера в ~/app_browsers, чтобы IE11 был правильно распознан. В блоге Scott Hanselman была вся информация: http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx (если вы не используете nuget, просто скопируйте файлы .browser из пакета nuget). – Lodewijk

24

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

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, и все теперь работает должным образом.

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

+1

работал для меня! спасибо – Thousand

+1

работал для меня тоже. Спасибо, у меня была эта проблема с контролем просмотра отчетов {просто говорю} –

+1

This Worked for Me. Благодаря! – Apollo

1

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

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

Найти ссылку, чтобы загрузить пользовательские. файл браузера с исправлением IE11.

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

Копия Telerik_IE11_fix.browser на пути целевого сервера в C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ Браузеры

Выполнить следующие команды на вашем сервере (видели его на Хансельман починков блог) кд C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 (или любой другой рамка версии ваш использует)

Run C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regbrowsers -i

Run IISReset на сервере

+0

Размещение исправления браузера в моем C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ Браузеры и C: \ Windows \ Microsoft.NET \ Framework \ v4. 0.30319 \ Config \ Браузерная папка и просто перезагрузка IIS устранила проблему для меня. – TheLegendaryCopyCoder

0

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

7

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

<script runat="server"> 

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

} 
</script> 
+4

Для чего это стоит, это единственное решение, которое работало для меня на моем хосте, где я не контролирую окружающую среду. Файлы .browser не помогли мне в моем случае. Просто знайте, что если вы сделаете это и поддерживаете javascript на своем сайте, то более старые браузеры без поддержки javascript больше не будут работать так, как они были. В моем случае это приемлемо. –

0

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

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

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