0

サンプルの Visual Studio 2008 ASP.NET 3.5 プロジェクト:ソース コード

コード

<form id="form1" runat="server">
    <asp:ScriptManager runat="Server" EnableScriptGlobalization="true"
    EnableScriptLocalization="true" ID="ScriptManager1" ScriptMode="Debug" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" RenderMode="Inline">
    <ContentTemplate>
        <div runat="server">
            test
            <br />
            <br />
            <asp:TextBox ID="TB1" runat="server" AutoPostBack="True" OnTextChanged="UIDataChanged" />
            <br />
            <asp:TextBox ID="TB2" runat="server" AutoPostBack="True" OnTextChanged="UIDataChanged" />
            <br />
            <asp:TextBox ID="TB3" runat="server" AutoPostBack="True" OnTextChanged="UIDataChanged" />
            <br />
            <asp:TextBox ID="TB4" runat="server" AutoPostBack="True" OnTextChanged="UIDataChanged" />
            <br />
            <br />
            <asp:Label ID="Label1" runat="server" Text="Counter"></asp:Label>
            <br />
            <br />
        </div>
    </ContentTemplate> 
</asp:UpdatePanel>
</form>

基本的に、アプリケーションを IE6 から IE8 に移行中です。うまくいかないシナリオに出くわしました。私はいたるところを見て、いくつかの記事を発見しましたが、十分に詳細なものはありませんでした.

基本的に、サンプル プロジェクトには 4 つのテキスト ボックスがあり、それぞれが構成されAutoPostBack="true"、サンプルOnTextChange="UIDataChanged"イベントを発生させます。

以下を使用して IE8 レンダリング モードを強制しました。<meta http-equiv="X-UA-Compatible" content="IE=8" />

エラーを再現するには:

注: テキスト ボックス 1 から 4 までを TB1、TB2 などと呼びます。

  • IE8 を起動し、テキストを入力する TB1 への TAB を起動します。
  • TAB をもう一度押すと、ポストバックが発生し、カーソルが TB1 に戻ることがわかります。注: カーソルの位置を保持するために特別なことはまだ行っていません。
  • TAB をもう一度押すと、テキストを入力する TB2 に移動します。
  • TAB をもう一度押すと、別のポストバックが発生し、カーソルが TB3 にジャンプします。しかし、これが問題です。これ以上編集することはできず、連続して TAB キーを押すと、テキスト ボックスを移動できなくなります。

更新 1:

上記を Visual Studio 2010 および IE9 Browser でテストしました。

テスト ケース 1:

  • ブラウザモード: IE=9
  • フレームワーク: 4.0
  • 結果 - テキスト フィールドでのタブ操作は期待どおりに機能します

テスト ケース 2:

  • ブラウザモード: IE=9
  • フレームワーク: 3.5
  • 結果 - テキスト フィールドでのタブ操作は期待どおりに機能します

テスト ケース 3:

  • ブラウザモード: IE=8
  • フレームワーク: 4.0
  • 結果 - 2 番目の TextBox の後にタブが壊れている

テスト ケース 4:

  • ブラウザモード: IE=8
  • フレームワーク: 3.5
  • 結果 - 2 番目の TextBox の後にタブが壊れている

上記の調査結果に基づいて、問題は Internet Explorer レンダリング エンジン内にある可能性が高いと思われます。

4

1 に答える 1

0

調査結果に基づいて、これは間違いなく IE8 のレンダリングの問題であるという結論に達しました。IE7 や IE9 とは動作が異なります。

さらなる調査に基づくと、レンダリングに関する IE7 と IE8 の違いは、実際に IE7 モードを適用するには大きすぎます。IE7 モードを強制すると、タブの問題は修正されますが、IE8 に対応するための他のスタイルの「修正」によっては、さらに複雑になる可能性があります。

今後の更新で、Internet Explorer 9 が利用可能になるか、すべてのユーザーの標準操作環境の一部になった場合は、標準準拠のために IE9 レンダリングまたは IE'edge' を適用することをお勧めします。

于 2012-07-04T01:08:35.030 に答える