首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HtmlButton标准模式在UpdatePanel中单击IE10会导致双XMLHttpRequest回发

使用HtmlButton标准模式在UpdatePanel中单击IE10会导致双XMLHttpRequest回发
EN

Stack Overflow用户
提问于 2013-07-19 13:21:21
回答 1查看 751关注 0票数 1

我们有一个.NET 4.0 WebForms应用程序。一个页面有一个包含一些UpdatePanel控件的HtmlButton。当服务器在.NET 4.0上运行时,这是正确的。

当服务器升级到4.5时,我们注意到单击按钮会挂起浏览器。旋转器会显示出来,用户的会话基本上是被锁定的,直到调用超时。

在浏览器开发工具(F12)的“网络”选项卡中,我们观察到:

  • 使用标准文档模式的IE10 :对服务器进行两次调用。第一个没有内容,结果是“(中止)”。Fiddler报告内容长度不匹配。第二个电话在超时之前是不会回的。
  • IE10 Compat View,Doc IE7标准:只对服务器进行一次调用。一切都很好。
  • 任何其他模式下的IE10 (也包括IE9)对服务器进行2次调用,第一次中止,第二次挂起/挂起。
  • Chrome:对服务器进行两次调用,但第二次调用成功。

对运行.Net 4.0的服务器执行相同的观察显示了类似的双调用,但在任何情况下第二次调用都没有挂起。

我通过创建一个新的默认.Net 4.5 WebForms应用程序来重新创建这种双重调用行为(除了挂起的第二次调用),其中包含一个UpdatePanel、一个文字和一个HtmlButton,如下所示:

代码语言:javascript
复制
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Literal ID="myliteral" runat="server"></asp:Literal>
        <button id="htmlbtn" runat="server" OnServerClick="htmlbtn_Click"></button>
    </ContentTemplate>      
</asp:UpdatePanel>

ServerClick事件只是将当前时间放在文字中。

这重新创建了双帖子行为。我还尝试使用其他类型的按钮,例如ImageButton,它们只正确地发出一个呼叫。

有人知道这是怎么回事吗?有什么方法可以避免使用HtmlButton的双帖子吗?我假设这两个电话与挂起的第二个电话有关,但这可能是一个错误的假设。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-24 07:25:57

结果是,对于每个未被重新绑定的部分页面请求,它们都会进行一些jQuery绑定。

在jQuery的$(document).ready()期间,我设置了到各种元素的绑定。在UpdatePanels引起的部分回发过程中调用此函数。因此,在某些情况下,我需要做的是在再次设置绑定之前执行如下操作:$('#ctrl').unbind();(可能有一种方法来检查绑定是否存在,并且只在必要时添加绑定。)

此外,页面上还有一个使用jQuery自动调整大小插件的文本区域。初始化时,插件在页面之外添加一个克隆文本区域,用于计算文本高度。在每个部分页面更新中,正在创建一个新的文本区域。使用Chrome的dev工具可以发现这个问题,因为我可以看到DOM实时变化。我添加了一些脚本来检查这些现有的文本区域并清理它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17747189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档