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
Leave a comment