IE10 has a nice new little bug which occurs with image buttons on 2nd or consecutive postback on a page which contains an update panel.
You will notice the bug as a broad javascript error message, but behind the scenes the issue occurs due to a bad type conversion to an integer from a floating point which has started to return from the .Net functions.
The official fix is a patch from Microsoft for your server, however, in the meantime you can simply apply the following in your global.asax.
Scott Hanselman has suggested a few things regarding this issue, but I think you will find the solution below to be more straightforward in the short term.
See solution below. (courtesy of R. Prestol)
vb:
'put these in global.asax.cs
Protected Sub Application_PostMapRequestHandler(sender As Object, e As System.EventArgs)
Dim app As HttpApplication = sender
Dim handler As IHttpHandler = app.Context.Handler
Dim page As Page = IIf(TypeOf handler Is Page, handler, Nothing)
If (page IsNot Nothing) Then
AddHandler page.Load, AddressOf Page_LoadFix
End If
End Sub
Private Sub Page_LoadFix(sender As Object, e As EventArgs)
Dim page As Page = HttpContext.Current.Handler
Dim smg As ScriptManager = ScriptManager.GetCurrent(page)
If smg IsNot Nothing AndAlso (page.IsPostBack = False OrElse smg.IsInAsyncPostBack = False) Then
ScriptManager.RegisterOnSubmitStatement(page, page.GetType, "IE10ImgFloatFix", "IE10ImgFloatFix();")
ScriptManager.RegisterStartupScript(page, page.GetType, "IE10ImgFloatFix_func", "function IE10ImgFloatFix() {try {var o = Sys.WebForms.PageRequestManager._instance;var s = o._additionalInput;s = s.replace(/(.y=\d+)([.]\d+)?/g, '$1');s = s.replace(/(.x=\d+)([.]\d+)?/g, '$1');o._additionalInput = s;} catch (ex){}}", True)
End If
End Sub
c#:
//put these in global.asax.cs
void Application_PostMapRequestHandler(object sender, EventArgs e)
{
var app = (HttpApplication)sender;
var handler = (IHttpHandler)app.Context.Handler;
Page page = handler as Page;
if (page != null)
{
page.Load += Page_LoadFix;
}
}
private void Page_LoadFix(object sender, EventArgs e)
{
var page = (Page)HttpContext.Current.Handler;
var smg = ScriptManager.GetCurrent(page);
if (smg != null && (page.IsPostBack == false || smg.IsInAsyncPostBack == false))
{
ScriptManager.RegisterOnSubmitStatement(page, page.GetType(), "IE10ImgFloatFix", "IE10ImgFloatFix();");
ScriptManager.RegisterStartupScript(page, page.GetType(), "IE10ImgFloatFix_func", "function IE10ImgFloatFix() {try {var o = Sys.WebForms.PageRequestManager._instance;var s = o._additionalInput;s = s.replace(/(.y=\\d+)([.]\\d+)?/g, '$1');s = s.replace(/(.x=\\d+)([.]\\d+)?/g, '$1');o._additionalInput = s;} catch (ex){}}", true);
}
}
References
http://support.microsoft.com/kb/2600088
http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
http://stackoverflow.com/questions/13784718/asp-net-fails-to-detect-ie10-causing-dopostback-is-undefined-javascript-error