【问题标题】:ASP.NET UpdatePanel & TabIndex with IE8 issue带有 IE8 问题的 ASP.NET UpdatePanel 和 TabIndex
【发布时间】: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 渲染模式使用:&lt;meta http-equiv="X-UA-Compatible" content="IE=8" /&gt;

重现错误:

注意:我将文本框 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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多