【发布时间】:2012-07-03 13:21:18
【问题描述】:
Visual Studio 2008 ASP.NET 3.5 项目示例:SOURCE CODE
代码
<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 和 TAB 到 TB1 输入一些文本。
- 再次按 TAB,您会注意到这会触发回发并将光标返回到 TB1。注意:我还没有做任何花哨的事情来保持光标位置。
- 再次按 TAB 键会将您带到 TB2,您可以在其中输入一些文本。
- 再按一次 TAB 后,又发生一次回发,光标跳到 TB3。 但这就是问题所在:无法进行进一步的编辑,如果您连续 TAB,您将不再移动任何文本框。
更新 1:
在 Visual Studio 2010 和 IE9 浏览器中测试了上述内容。
测试用例 1:
- 浏览器模式:IE=9
- 框架:4.0
- 结果 - 文本字段上的选项卡按预期工作
测试用例 2:
- 浏览器模式:IE=9
- 框架:3.5
- 结果 - 文本字段上的选项卡按预期工作
测试用例 3:
- 浏览器模式:IE=8
- 框架:4.0
- 结果 - 在第 2 个文本框之后的分页中断
测试用例 4:
- 浏览器模式:IE=8
- 框架:3.5
- 结果 - 在第 2 个文本框之后的分页中断
根据上述发现,问题可能出在 Internet Explorer 渲染引擎内。
【问题讨论】:
标签: asp.net internet-explorer-8 updatepanel cross-browser