首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当从更新面板(ASP.NET jQuery窗体)内部触发时,为什么不调用ASP.NET单击事件?

当从更新面板(ASP.NET jQuery窗体)内部触发时,为什么不调用ASP.NET单击事件?
EN

Stack Overflow用户
提问于 2018-06-09 05:08:09
回答 1查看 66关注 0票数 1

我正在追踪IE11和Edge中的一个难以捉摸的bug。我注意到Chrome和Edge之间的网络调用有所不同,我不确定这只是浏览器的开发工具显示流量的方式之间的差异,还是表明Edge中确实发生了一些不在Chrome中的事情。

下面的屏幕截图来自Edge中的开发工具,在页面加载过程中记录下来。

看起来对服务器的一些请求没有被认为是经过身份验证的,所以它被重定向到登录页面。Chrome中相同的页面加载序列并没有显示这一点--它只有一个页面请求。我的第一个问题是--有没有办法使用Edge dev工具来追踪哪个东西正在发出特定的请求?或者这是我需要担心的事情,如果这是预期的行为?

关于我试图解决的bug的一些背景知识

该页面使用UpdatePanels和jQuery ajax向服务器发出请求。相关的jQuery ajax调用是在更新面板内对象上触发的单击事件中进行的。我已经验证了这些点击事件不会触发回发。单击处理程序似乎执行得很好(大多数时候),但错误是有时它们似乎根本不执行-我的console.log语句都不会出现在控制台中,而且在您再次单击之前,什么都不会发生(除了页面会稍微跳转)。每隔一次点击似乎都能起作用。这似乎发生在页面上加载了大量数据时(注意dev tools中第一个请求的加载时间)。

我已经确保在每次更新面板回发后重新绑定更新面板内的对象上的单击事件

代码语言:javascript
复制
Sys.WebForms.PageRequestManager.getInstance().add_endRequest

该站点使用forms身份验证。在我测试的站点上只有一台服务器--不涉及负载均衡器。

此外,在任何人建议之前,我们正试图远离更新面板,但我们还没有完全准备好退出这个严重依赖它们的页面。这也是我首选的解决方案:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 06:15:27

你提到有关的网页很大。

因此,当您第一次快速单击此类客户端超链接/按钮时,JavaScript onload并不总是完成,这意味着会触发常规的http GET请求,您可以在开发人员工具中看到这一点。

您还将在其他浏览器中看到这一点。

在onload完成之前,尝试找到一种方法来禁用这些客户端超链接/按钮。

您可以最初通过以下方式禁用它们:

代码语言:javascript
复制
<a class="clientsideButton" href="#" onclick="javascript:return false">click here</a>

并在事后启用它们。

别忘了在部分回发后再次重新绑定它们!

代码语言:javascript
复制
<script>
$(function() {
    $(".clientsideButton").on("click", 
        function() { 
            // Make AJAX request.
    });
});
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768412

复制
相关文章

相似问题

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