So Su Team : Web Development Tags : Technology Web Development Programming

'WebForm_DoPostBackWithOptions' is undefined in IE11

So Su Team : Web Development Tags : Technology Web Development Programming

The other day, I did some maintenance work on a small website. The issue was that IE11 users were not able add items to their cart. The cart works in all other browsers, including older IE. This is the javascript error:

'WebForm_DoPostBackWithOptions' is undefined

Google made light work of this error message, directing me to Scott Hanselman’s blog describing the issue.

In summary, ASP.NET does not recognise the user agent string provided by IE11, and incorrectly “detects” it as a Mozilla browser version 0.0. The fix was to install some updates. But these updates are months old, and sure enough when I checked windows updates on the server, the fixes were there. So why was the issue still happening?

After a little further digging about, it appears that if you have any .browser file in the App_browser folder of the web project, that overrides the global .browser files stored on the server. The ideal solution is to remove this custom .browser file. But I couldn’t do that without a deep investigation into why it was there in the first place. So I opted for the next best solution which was to create another .browser file defining the capabilities of IE11. This worked well, and I didn’t have to restart the web service to do it. A quick and easy fix. Just remember to touch the existing .browser file to force the app to refresh and notice the new .browser file. Here’s the .browser file, which I grabbed from a comment on Hanselman’s blog.

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