解决ASP.NET服务器控件在IE10下的不兼容问题

相信很多使用IE10的童鞋们已经发现了这个问题,以下是本人在IE10标准模式下发生的问题,声明:IE10不只有一个版本。

1.服务器控件属性丢失,在aspx页面定义的TextBox:

  <asp:TextBox ID="txt" runat="server" Width="200" />

  在IE10标准模式下浏览发现宽度不对,遂打开源代码发现成这样了:

  <input name="txt" type="text" id="txt" /> width属性没了

2.偶尔发现页面报错__doPostBack找不到

目前就发现以上两点,第一反应就是兼容性问题,查了一些资料,果然是IE10的bug,不禁对微软的产品不满,新的浏览器尽然连自己的服务器控件都存在兼容性问题。

一般用户只需要设置浏览器在兼容模式下运行就可以解决了,但是开发人员怎么去解决这个问题呢?

VS项目里加App_Browsers文件夹,加ie.browser文件,文件内容帖下面的内容:

<browsers>
    <!-- Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325) -->
    <browser id="IE6Plus" parentID="IE">
        <identification>
            <capability name="majorversion" match="^[6-9]|\d{2,}$" />
        </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>

    <!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->
    <browser id="IE6to9" parentID="IE6Plus">
        <identification>
            <capability name="majorversion" match="^[6-9]$" />
        </identification>
    </browser>

    <!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->
    <browser id="IE7" parentID="IE6to9">
        <identification>
            <capability name="majorversion" match="^7$" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="5.7" />
        </capabilities>
    </browser>

    <!-- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) -->
    <browser id="IE8" parentID="IE6to9">
        <identification>
            <capability name="majorversion" match="^8$" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="6.0" />
        </capabilities>
    </browser>

    <!-- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) -->
    <browser id="IE9" parentID="IE6to9">
        <identification>
            <capability name="majorversion" match="^9$" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="6.0" />
        </capabilities>
    </browser>

    <!-- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) -->
    <browser id="IE10Plus" parentID="IE6Plus">
        <identification>
            <capability name="majorversion" match="\d{2,}" />
        </identification>
        <capabilities>
            <capability name="jscriptversion" value="6.0" />
        </capabilities>
    </browser>

    <gateway id="IEbeta" parentID="IE">
        <identification>
            <capability name="letters" match="^([bB]|ab)" />
        </identification>

        <capture>
        </capture>

        <capabilities>
            <capability name="beta"    value="true" />
        </capabilities>
    </gateway>
</browsers>

这是一种基于站点的修复方式,参考微软官方资料:

.NET 4 浏览器更新 NuGet 包 - http://nuget.org/List/Packages/App_BrowsersUpdate

.NET 2.0 浏览器更新 NuGet 包 - http://nuget.org/List/Packages/App_BrowsersUpdate.net20

还有一种是打补丁,能解决服务器上所有站点的兼容性问题

.NET 4 - http://support.microsoft.com/kb/2600088

.NET 2.0 - http://support.microsoft.com/kb/2600100

另外博主在项目里用了大量的devexpress服务器控件,苦不堪言,虽然按照以上方式进行修复,VS自带的控件倒是没出现问题,但是dev控件却一大堆错误,最终还是没有修复,只能让用户使用兼容性模式。

只希望微软发布下一版本浏览器时能修复这个问题

补充,在web.config里加HTTP 响应标头改变浏览器呈现模式

参考资料:

http://www.iis.net/configreference/system.webserver/httpprotocol/customheaders

http://msdn.microsoft.com/zh-cn/library/bb763179.aspx

http://blogs.msdn.com/b/webtopics/archive/2008/09/05/configuring-iis-to-work-around-webpage-display-issues-caused-by-internet-explorer-8-0.aspx

<configuration>
       <system.webServer>
          <httpProtocol>
             <customHeaders>
                <clear />
                <add name="X-UA-Compatible" value="IE=EmulateIE7" />
             </customHeaders>
          </httpProtocol>
       </system.webServer>
    </configuration>
时间: 2025-01-06 07:51:08

解决ASP.NET服务器控件在IE10下的不兼容问题的相关文章

ASP.NET服务器控件在IE10浏览器(非兼容模式)下报脚本错误的可能解决办法

关于IE10出现LinkButton点击无效的情况:        一般高配置的系统如Win7旗舰版SP1系统不会出现这种情况,针对家庭普通版和专业版的用户通过测试都有这种情况,对于开发人员要解决不同系统和IE的兼容问题一时有点摸不着头脑,可能微软发布IE10正式版本不久,兼容问题没有考虑周全,或者微软目的是指引用户向着高版本看齐最终目的推销win8,不管怎样,解决方法才是王道:       网上资料显示这种情况是ASP.NET无法检测IE10,导致_doPostBack未定义JavaScrip

JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法(转)

原文:JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法 jquery-easyui是一个基于jquery的图形界面插件,利用easyui可以创建很多好看的网页界面效果,easyui的相关地址是:http://jquery-easyui.wikidot.com/: easyui的中文文档地址是:http://www.easyui.net/,本人也利用easeyUI在做一些页面效果.由于我很喜欢那种弹出的对话框界面,因此在界面中应用了Dialog类来处理一些确认

FCKEditor在IE10下的不兼容问题解决方法

环境介绍:FCKEditor 版本 2.x.x 问题:IE10 下FCKEditor不兼容,显示不出来 关键词:不同于其他方法之处是第一个关键点,其他网友的正则表达式不对 解放方法:(可以直接<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />解决,也可以如下) 1.在 fckeditor/fckeditor.js 文件 > 方法: FCKeditor_IsCompatibleB

SSRS (SQL Server Report Service) 在IE9, IE10下显示不全的解决办法

在做项目的过程中遇到SSRS与IE9, IE10不兼容的情况,具体表现为报表页面在IE9 和 IE10下面只显示三分之一,靠左显示,下方有滚动条,右三分之二为空白.查看源代码后发现,上面一个<tr>里只有一个<td>,并colspan=3, 下面报表内容区域的<tr>有三个<td>但前两个是hidden的.最初是想把表格结构调整下,去掉前面hidden的两个<td>,后来发现太麻烦不说,还改变了微软原来的表单内容.就在网上搜索解决方案,微软自己说

解决ASP.NET 自定义报表部署到IIS浏览时出现ASP.NET会话已结束问题

进到公司开始接触的项目就要做报表,原系统使用的是水晶报表,但是水晶报表展示方面美观方面不怎么好需客户需要美化一下.自定义报表与水晶报表之前都没有接触过,自己先学了一下这两种报表,后面觉得自定义报表设计比较灵活所以就选择了自定义报表.当开发完成后自己在开始环境下浏览测试都没有出现过ASP.NET会话已过期的问题,可是当部署到IIS测试人员进行测试时出如图情况: 自己接触IIS不多,并且在开发环境下测试都没有问题联署到IIS就有问题当时就觉得有点头大,于是上网找了下资料但是这方面的资料并不多并且很多

MVC .NET4 IE10下FormsAuthentication.SetAuthCookie无效的问题

最初的问题是网站在IE10下不兼容,使用兼容性代码:<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10"> 让IE强制使用兼容模式,但是这种情况在有的电脑上没有管理员权限的时候是无效的, 即用IE打开了使用上面这段代码的页面后,按F12, IE的模式还是IE模式,不是想要的IE10兼容模式. 在有管理员权限的电脑上,变成了IE10兼容模式,问题解决. 另外FormsAuthenticati

解决ASP.Net第一次访问慢的处理(IIS8)

本篇经验以IIS8,Windows Server 2012R2做为案例. IIS8 运行在 Windows Server 2012 and Windows 8 版本以上的平台上. IIS中应用程序池和网站是单独存在的,但是网站运行必须建立在对应的应用程序池启动的前提下. 默认情况下,应用程序池在不活动情况下(无请求操作),一段时间后,将被IIS自动回收掉. IIS8 自带应用程序初始化工具包,IIS7.5要搜索独立安装包进行安装,低于7.5的暂时不支持IIS自动初始化. 本篇经验中的方法能解决A

Asp.Net服务器控件开发的Grid实现(一)

使用Asp.Net做Web开发时,系统提供的控件,有时难以达成所要的目的.这时,有多种方式可以解决,比如采用html+js的形式,在前端布局出所要的界面,然后再通过ajax等方式去获取数据,以达成目的. 但这样做,很是费劲,特别是当布局出来的界面需要重用的时候,更加费劲.有人,会直接将该界面的代码进行拷贝,但这对后来的维护必然带来更大的问题.所以就考虑,有没有一种方式可以让布局得到重用,又便于维护的.Asp.Net的控件可以很方便的布局,同时又能在后台中直接操作控件,实现相关的数据逻辑.所以就想

Echarts ecomfe 触摸屏 touch 在IE10下无法显示悬浮框

问题描述: Windows 8 IE10浏览http://echarts.baidu.com/doc/example/line2.html 时,鼠标放置在数据点上时无法显示悬浮框. 正常情况为: 而现在情况为: ? 问题分析: 公司有各种型号电脑,X230,W530,X240,业务部门多使用x240, 这一款笔记本屏幕带有触摸屏功能,其他型号没有.所有操作系统都为win8,IE10小版本号也一致. 最初就将问题定位为触摸屏引起了这个问题,但一直无法找到具体原因.因为在chrome,firfox等