asp.NetサーバコントロールのIE 10での互換性の問題

26624 ワード

多くのIE 10を使用する子供靴たちがこの問題を発見したと信じています.以下は本人がIE 10標準モードで発生した問題です.IE 10は1つのバージョンだけではありません.
1.サーバコントロールの属性が失われ、aspxページで定義されたTextBox:
  
IE 10標準モードでブラウズすると幅が間違っていたので、ソースコードを開くとこうなりました.
width属性がなくなりました
2.たまにページエラーを発見する_doPostBackが見つからない
現在、上記の2つの点について、第1反応は互換性の問題であり、いくつかの資料を調べたところ、やはりIE 10のバグであり、マイクロソフトの製品に不満を禁じ得ず、新しいブラウザは自分のサーバーコントロールにも互換性の問題がある.
一般ユーザーはブラウザを設定して互換モードで実行するだけで解決できますが、開発者はどのようにこの問題を解決しますか?
VSプロジェクトにAppを加えるBrowsersフォルダ、ie.browserファイル、ファイル内容帖の下の内容:
 1 <browsers>

 2     <!-- Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4325) -->

 3     <browser id="IE6Plus" parentID="IE">

 4         <identification>

 5             <capability name="majorversion" match="^[6-9]|\d{2,}$" />

 6         </identification>

 7 

 8         <capabilities>

 9             <capability name="ecmascriptversion"    value="3.0" />

10             <capability name="jscriptversion"       value="5.6" />

11             <capability name="javascript"           value="true" />

12             <capability name="javascriptversion"    value="1.5" />

13             <capability name="msdomversion"         value="${majorversion}.${minorversion}" />

14             <capability name="w3cdomversion"        value="1.0" />

15             <capability name="ExchangeOmaSupported" value="true" />

16             <capability name="activexcontrols"      value="true" />

17             <capability name="backgroundsounds"     value="true" />

18             <capability name="cookies"              value="true" />

19             <capability name="frames"               value="true" />

20             <capability name="javaapplets"          value="true" />

21             <capability name="supportsCallback"     value="true" />

22             <capability name="supportsFileUpload"   value="true" />

23             <capability name="supportsMultilineTextBoxDisplay" value="true" />

24             <capability name="supportsMaintainScrollPositionOnPostback" value="true" />

25             <capability name="supportsVCard"        value="true" />

26             <capability name="supportsXmlHttp"      value="true" />

27             <capability name="tables"               value="true" />

28             <capability name="supportsAccessKeyAttribute"    value="true" />

29             <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />

30             <capability name="vbscript"             value="true" />

31         </capabilities>

32     </browser>

33 

34     <!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->

35     <browser id="IE6to9" parentID="IE6Plus">

36         <identification>

37             <capability name="majorversion" match="^[6-9]$" />

38         </identification>

39     </browser>

40 

41     <!-- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;) -->

42     <browser id="IE7" parentID="IE6to9">

43         <identification>

44             <capability name="majorversion" match="^7$" />

45         </identification>

46         <capabilities>

47             <capability name="jscriptversion" value="5.7" />

48         </capabilities>

49     </browser>

50 

51     <!-- 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) -->

52     <browser id="IE8" parentID="IE6to9">

53         <identification>

54             <capability name="majorversion" match="^8$" />

55         </identification>

56         <capabilities>

57             <capability name="jscriptversion" value="6.0" />

58         </capabilities>

59     </browser>

60 

61     <!-- 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) -->

62     <browser id="IE9" parentID="IE6to9">

63         <identification>

64             <capability name="majorversion" match="^9$" />

65         </identification>

66         <capabilities>

67             <capability name="jscriptversion" value="6.0" />

68         </capabilities>

69     </browser>

70 

71     <!-- Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) -->

72     <browser id="IE10Plus" parentID="IE6Plus">

73         <identification>

74             <capability name="majorversion" match="\d{2,}" />

75         </identification>

76         <capabilities>

77             <capability name="jscriptversion" value="6.0" />

78         </capabilities>

79     </browser>

80 

81     <gateway id="IEbeta" parentID="IE">

82         <identification>

83             <capability name="letters" match="^([bB]|ab)" />

84         </identification>

85 

86         <capture>

87         </capture>

88 

89         <capabilities>

90             <capability name="beta"    value="true" />

91         </capabilities>

92     </gateway>

93 </browsers>

これは、マイクロソフトの公式資料を参照して、サイトベースの修復方法です.
.NET 4ブラウザ更新NuGetパッケージ-http://nuget.org/List/Packages/App_BrowsersUpdate
.NET 2.0ブラウザ更新NuGetパッケージ-http://nuget.org/List/Packages/App_BrowsersUpdate.net20
もう1つは、サーバ上のすべてのサイトの互換性の問題を解決するパッチです.
.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