13

Using a readymade asp HyperLink control, IE 11 is giving the error SCRIPT5009: __doPostBack is undefined with a link to here: http://msdn.microsoft.com/en-us/library/ie/xyf5fs0y(v=vs.94).aspx

This is seen in the F12 devtools console window.

Has anybody encountered this yet and is there a fix? This is a production environment.

EDIT: Applying hotfix http://support.microsoft.com/kb/2600088 didn't work for me, and IE 10 on Windows 8 works fine.

There is more recent article from Scott Hanselman with updated information. http://www.hanselman.com/blog/IE10AndIE11AndWindows81AndDoPostBack.aspx I will attempt these fixes and update this question but this appears to be isolated to windows 8.1 and IE11.

personaelit
  • 1,633
  • 3
  • 31
  • 59
  • 4
    possible duplicate of [IE10 SCRIPT5009: '\_\_doPostBack' is undefined](http://stackoverflow.com/questions/15273618/ie10-script5009-dopostback-is-undefined) – Mgetz Nov 11 '13 at 21:00
  • 3
    new browser.... same bug – Mgetz Nov 11 '13 at 21:00
  • I agree this appears to be a duplicate. I will try the hotfixes and confirm. – personaelit Nov 11 '13 at 21:09
  • 1
    another possible dupe: http://stackoverflow.com/questions/18485339/dopostback-failing-in-ie-11-windows-8-1 – personaelit Nov 11 '13 at 21:23
  • This question should however NOT be deleted... only closed as it redirects to the correct solution despite the browser version change – Mgetz Nov 11 '13 at 21:28
  • Do I just click close above? – personaelit Nov 11 '13 at 21:32
  • Jim, please could you update with your findings, what was the correct solution? – Chris Jan 07 '14 at 16:13
  • I wouldn't necessarily call this a good solution, but we were experiencing the same issue and none of the hotfixes mentioned worked, so we blew over the browser definition files with the definitions from a system with 4.5 installed. This fixed it for us. – Justin Edwards Jan 07 '14 at 21:59
  • Installing Microsoft .Net Framework 4.5 on the server fixed for us. – Chris Jan 08 '14 at 09:30

9 Answers9

25

After struggling with the same issue for a few days, we came across this solution:

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.

Add a new .browser file to the App_Browsers folder; we named the file 'IE11.browser', and if the App_Browsers folder doesn't exist, create it.

We then simply copied the body from the link above into the newly created file, redeployed, and now there's no more _doPostBack error.

The body of the file looked like this:

<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>

We didn't have to upgrade our .Net version from 4 to 4.5, and everything is now working as it should.

Hopefully this helps someone having the same frustrating issue!

Robby Cowell
  • 564
  • 7
  • 18
  • 1
    worked for me too. Thanks I had this problem with a report viewer control {just saying} – Gerry Whitworth Sep 25 '14 at 16:45
  • Upgrading to FW 4.5.2 leads to new issues due to breaking changes on currently deployed applications for my customer, I like this solution and will try it soon. Thank you very much ! – AFract Mar 17 '15 at 10:52
  • Rather than the above fix, for those who can't install FW4.5.2, there's a MS hotfix aiming IE11 : http://support.microsoft.com/kb/2836939/ – AFract Mar 18 '15 at 16:33
  • This worked wonders! I had to make one change to it though, because apparently some IE11 browsers have something *between* Trident and rv. I changed `7.0; rv` in the useragent match to `7.0;(.*?)rv`. – Stryner Apr 02 '15 at 15:27
  • Amazing - THANK YOU. And yet another flaw and reason to dislike IE. – deebs Jun 23 '15 at 21:13
7

Put below script in your master page will surely fix it. i had a similar issue and it got fixed.

<script runat="server">

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

}
</script> 
vishal
  • 233
  • 4
  • 7
  • 4
    For what it's worth, this is the only solution that worked for me on my host where I have no control over the environment. The .browser files didn't help me in my case. Just know that if you do this you and hard-coding support for javascript into your site, so older browsers with no javascript support will no longer function as they had been. In my case, this is acceptable. – Nathan Pond Dec 05 '14 at 20:11
3

Installing the .NET Framework 4.5 on your web server should resolve it.

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

Alternatively, if you can't install .NET Framework 4.5 there is a Microsoft hotfix for IE11 : http://support.microsoft.com/kb/2836939 (Thank you to @Afract for your comment)

Chris
  • 3,210
  • 1
  • 33
  • 35
  • 3
    A bit of back story -- this probably would have fixed it for me, but I opened Pandora's box when the .NET 4.5 install failed due to some obscure RSA problem on my servers. Long story short, it required two new server builds and three weeks of my life. – personaelit Jan 30 '14 at 18:14
  • 1
    @Jim it happened with us as well. Just making the session and authentication mode with UseCookies does not work. You have to install whole new version of Framework !! However - it works perfectly in development mode with IE11 with framework 4 – DipakRiswadkar Oct 08 '14 at 08:16
  • 3
    For those who can't install FW4.5.2, there's a MS hotfix aiming IE11 : http://support.microsoft.com/kb/2836939/ – AFract Mar 18 '15 at 16:32
  • Based on the comments above, installing .net 4.5 should be very carefully considered when planning an install on a production server. – TheLegendaryCopyCoder Mar 28 '15 at 16:33
  • 1
    @AFract, after trying alot of solutions, your link in the comments fixed my issue. Thanks – Diablo Jun 01 '16 at 14:28
1

Installing Framework 4.5 on our server requires wading through a swamp of red tape and filling out forms, so here is what I did:

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

Find the link to download a custom .browser file with the IE11 fix.

Save telerik_ie11_browser_file_fix.zip to your computer and unzip Telerik_IE11_fix.browser

Copy Telerik_IE11_fix.browser to the target server path of C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers

Run the following commands on your server (saw it on a hanselman fix blog) cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319 (or whatever framework version your are using)

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

Run iisreset on your server

user3201809
  • 391
  • 3
  • 3
  • Placing the browser fix into my C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers and C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers folder and just restarting IIS fixed the problem for me. – TheLegendaryCopyCoder Mar 28 '15 at 16:43
0

Essentially what's going on is that there are 2 missing html hidden elements "eventtarget" and "eventargument", as well as a missing function "__doPostBack".

These are missing from the DOM.

I tried all the fixes listed for this and none worked. However using a combination of jquery and javascript there is an unobtrusive solution. Add this to your javascript on document ready and you're off to the races:

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();
    }
  };
}

I understand that some of said installing 4.5 fixes this. I would definitely recommend that. However, if you're like me working on an enterprise public facing site with a cms system baked in .net 4, this might just be an easier solution, as opposed to possibly introducing new bugs created from updating your platform.

  • 1
    Please don't do this. What happens is that IE11 is not recognised by Asp.net as a modern browser due to the fact that the user-agent changed. If you want to fix this without installing .net 4.5 on the server, you need to include browsercap files in ~/app_browsers so IE11 is correctly recognised. Scott Hanselman's blog had all the info: http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx (if you don't use nuget, just copy the .browser files from the nuget package). – Lodewijk Jun 05 '14 at 13:58
0

Adding a browser config file to App_Browsers (see above for XML) on Windows 2008 with IIS 7.5 is working for IE 11. On a previous site we did something else, but this is much simpler.

0

None of the hotfixes worked for me, neither updating ie.browser file. I'm on a Windows Server 2008 R2.

The only solution that worked though (apart from upgrading to .net 4.5) is the addition of the script suggested by @vishal in this thread.

Community
  • 1
  • 1
Valer
  • 51
  • 2
0

I discovered a page that was missing the form tag with the runnat='server'. If this is not on your page then the postback will not be able to pass back the controls and properly fire any code behind

Brandon
  • 1,036
  • 2
  • 17
  • 19
0

What happens is that IE11 is not recognised by Asp.net as a modern browser due to the fact that the user-agent changed, for anyone in same situation the only solution out of 100s of suggestions for me was Adding a setTimeout

instead of using below snipet

__doPostBack('ButtonPostBack', "");   

Use this one

setTimeout(function () { __doPostBack('ButtonPostBack', ""); }, 1);
Manoj Patil
  • 970
  • 1
  • 10
  • 19