ASP.NET UpdatePanel& TabIndex与IE8问题

时间:2012-07-03 06:07:51

标签: asp.net internet-explorer-8 updatepanel cross-browser

示例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
  • 结果 - 第二个TextBox
  • 后标签损坏

测试案例4:

  • 浏览器模式:IE = 8
  • 框架:3.5
  • 结果 - 第二个TextBox
  • 后标签损坏

根据上述调查结果,似乎问题可能出在Internet Explorer渲染引擎中。

1 个答案:

答案 0 :(得分:0)

根据调查结果,我得出的结论是,这绝对是IE8渲染问题。它的行为与IE7和IE9不同。

基于进一步调查,IE7和IE8在渲染方面的差异也太大,无法实际执行IE7模式。 执行IE7模式将解决标签问题,但可能会引入更多复杂性,具体取决于其他样式“修复”以适应IE8。

对于将来的更新,如果Internet Explorer 9确实可用或者是每个用户的标准操作环境的一部分,那么我建议强制执行IE9渲染或IE'edge'以符合标准。