解決ASP.NET伺服器控制項在IE10下的不相容問題

來源:互聯網
上載者:User

標籤:瀏覽器   伺服器   原始碼   檔案夾   相容性   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>


本文出自 “靈雨飄零部落格” 部落格,請務必保留此出處http://101779.blog.51cto.com/91779/1571419

解決ASP.NET伺服器控制項在IE10下的不相容問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.