2013年5月26日 星期日

IE10 相容性問題

近期許多人反應在IE9沒問題的網頁程式,在升級IE10卻頻頻發生錯誤,重裝回IE9後又回復正常,或者使用相容性檢視也可以正常使用。
原因是因為asp.net 2.0、3.5、4.0無法辨識IE10的標頭字串。
可參考:保哥-解決 IE10 瀏覽器無法使用 ASP.NET 表單驗證登入的問題 

這邊提供一種解法:
Microsoft 在 2012/9/17 於 下午 03:23 所公佈
This issue was fixed in .NET 4.5. We are investigating supplying a fix for .NET 4.0. In the meantime, you might try using the X-UA-Compatibility http-equiv meta tag (or header) to force IE into IE9 rendering mode.
from:http://connect.microsoft.com/VisualStudio/feedback/details/755419/asp-net-4-0-and-ie10-click-on-imagebutton-in-updatepanel-produces-error-click-on-normal-button-does-not
簡單說就是使用meta的方式讓瀏覽器自動使用相容性模式。
作法1:
在網頁標頭加上
<meta http-equiv="X-UA-Compatible" content="IE=9, IE=8, IE=7, chrome=1" />
作法二:web.config上加上
<httpProtocol>
     <customHeaders>
        <clear />
        <add name="X-UA-Compatible" value="IE=9, IE=8, IE=7, chrome=1" />
     </customHeaders>
</httpProtocol>
作法三:IIS上設定
image
image

2014.02.13補充
做了以上測試IE10解決了,但是IE11無法卻登入!!!
有人建議直接修正blowser檔:
<browsers>
<browser id="IE11" parentID="Mozilla">
<identification>
<userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
<userAgent nonMatch="IEMobile" />
</identification>
<capture>
<userAgent match="Trident/(?'layoutVersion'\d+)" />
</capture>
<capabilities>
<capability name="browser" value="IE" />
<capability name="layoutEngine" value="Trident" />
<capability name="layoutEngineVersion" value="${layoutVersion}" />
<capability name="extra" value="${extra}" />
<capability name="isColor" value="true" />
<capability name="letters" value="${letters}" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="screenBitDepth" value="8" />
<capability name="type" value="IE${major}" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->
<browser id="IE110" parentID="IE11">
<identification>
<capability name="majorversion" match="11" />
</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>
<browser refID="Default">
<controlAdapters>
<adapter controlType="SystemLead.Framework.Web.Controls.SLTreeView" adapterType="SystemLead.Framework.Web.Controls.SLTreeViewAdapter,SystemLead.Framework.Web" />
<adapter controlType="SystemLead.Framework.Web.Controls.SLTabMenu" adapterType="SystemLead.Framework.Web.Controls.SLTabMenuAdapter,SystemLead.Framework.Web" />
<!--
<adapter controlType="SystemLead.Framework.Web.Controls.SLCollapseMenu" adapterType="SystemLead.Framework.Web.Controls.SLCollapseMenuAdapter,SystemLead.Framework.Web" />
-->
<adapter controlType="SystemLead.Framework.Web.Controls.SLCollapseMenu" adapterType="SystemLead.Framework.Web.Controls.SLNewCollapseMenuAdapter,SystemLead.Framework.Web" />
<adapter controlType="AjaxControlToolkit.AsyncFileUpload" adapterType="SystemLead.Framework.Web.Controls.SLAsyncFileUploadAdapter,SystemLead.Framework.Web" />
<adapter controlType="SystemLead.Framework.Web.Controls.SLLabel" adapterType="SystemLead.Framework.Web.Controls.SLLabelAdapter,SystemLead.Framework.Web" />
<adapter controlType="AjaxControlToolkit.CalendarExtender" adapterType="SystemLead.Framework.Web.Controls.SLCalendarExtenderAdapter,SystemLead.Framework.Web" />
<adapter controlType="AjaxControlToolkit.AutoCompleteExtender" adapterType="SystemLead.Framework.Web.Controls.SLAutoCompleteExtenderAdapter,SystemLead.Framework.Web" />
</controlAdapters>
</browser>
</browsers>
view raw IEFix.browser hosted with ❤ by GitHub

沒有留言:

張貼留言