サンプルの 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 レンダリング エンジン内にある可能性が高いと思われます。