工作中发生了一件诡异的事情:
程序在Win7+.NET4.0+IIS7.5的服务器部署,IE8和IE11请求时,响应的样式都正常。
但是在美的同事反映说,Windows Server 2003服务器.net4.0+IIS6.0的服务器,IE11浏览器访问的时候,页面错位,并且back按钮功能不对。诡异的是,在IE8,Firefox,Chrome等浏览器都是正常。
仅仅在服务器win2003+.net4.0+IIS6.0,客户端IE11遇到这种怪异的情况。
这种情况下,查看生成的源代码发现,获取的响应有以下不同:
1.<asp:RadioButtonList/>控件在其他浏览器生成的是<table>.....</table>,而IE生成的是<span></span>,在代码中指定 RepeatLayout="Table"也没有效果,还是按照 RepeatLayout="Flow"生成了span。
解决方案:无奈指定为 RepeatLayout="Flow",好让其他浏览器解析的源码和IE11一致,然后通过CSS控制。
2.<asp:ImageButton ID="Pdf_btn" runat="server" ImageUrl="~/images/Adobe_PDF_icon.png" Width="35px" Height="40px" OnClick="Pdf_btn_Click" /> IE11下PDF图片很大。原来原始图片是102*102
在其他浏览器中生成了style="width: 35px; height: 40px;"高宽是对的,IE11下没有生成这个style,所以是原样输出。
解决方案:把图片修改成33*33, 把 Width="35px" Height="40px"去掉,让所有浏览器都输出原始图片大小。
2.2 其他select,input也没有width,heiht属性
3.back按钮功能是因为 ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "script", "<script language='javascript'>goback()();</script>", false);注册JS的时候,报错
解决方案:这里直接用<input type='button' οnclick='goback()'/>就好了,不需要服务器控制。
原来,UpdatePanel这种Ajax方式在IE11上生成的HTML&JS代码不一样。
3.2 但是所有的Ajax方式都失效了,变成post back回传了。....
PS:IE11 issue,应该首先对比win2203+IE11下生成的HTML有什么不同,看看在基础上改要花多久时间,不应该自己尝试写DIV样式取代,因为你也不能保证你重写的就一定工作,而且工作量太大,在今天时间很紧张,要复习技术的情况下,不是最好的解决方案。 我之前预计3-4个小时能解决,今天实际上午2小时+下面4小时,一共花了6小时左右,今天还算高效,没被其他的打扰。不然更久。 如果一开始我就对比了,可能我可以省一半的时间,差不多3-4小时解决。