我正在追踪IE11和Edge中的一个难以捉摸的bug。我注意到Chrome和Edge之间的网络调用有所不同,我不确定这只是浏览器的开发工具显示流量的方式之间的差异,还是表明Edge中确实发生了一些不在Chrome中的事情。
下面的屏幕截图来自Edge中的开发工具,在页面加载过程中记录下来。
看起来对服务器的一些请求没有被认为是经过身份验证的,所以它被重定向到登录页面。Chrome中相同的页面加载序列并没有显示这一点--它只有一个页面请求。我的第一个问题是--有没有办法使用Edge dev工具来追踪哪个东西正在发出特定的请求?或者这是我需要担心的事情,如果这是预期的行为?
关于我试图解决的bug的一些背景知识
该页面使用UpdatePanels和jQuery ajax向服务器发出请求。相关的jQuery ajax调用是在更新面板内对象上触发的单击事件中进行的。我已经验证了这些点击事件不会触发回发。单击处理程序似乎执行得很好(大多数时候),但错误是有时它们似乎根本不执行-我的console.log语句都不会出现在控制台中,而且在您再次单击之前,什么都不会发生(除了页面会稍微跳转)。每隔一次点击似乎都能起作用。这似乎发生在页面上加载了大量数据时(注意dev tools中第一个请求的加载时间)。
我已经确保在每次更新面板回发后重新绑定更新面板内的对象上的单击事件
Sys.WebForms.PageRequestManager.getInstance().add_endRequest
该站点使用forms身份验证。在我测试的站点上只有一台服务器--不涉及负载均衡器。
此外,在任何人建议之前,我们正试图远离更新面板,但我们还没有完全准备好退出这个严重依赖它们的页面。这也是我首选的解决方案:)
发布于 2018-06-09 06:15:27
你提到有关的网页很大。
因此,当您第一次快速单击此类客户端超链接/按钮时,JavaScript onload并不总是完成,这意味着会触发常规的http GET请求,您可以在开发人员工具中看到这一点。
您还将在其他浏览器中看到这一点。
在onload完成之前,尝试找到一种方法来禁用这些客户端超链接/按钮。
您可以最初通过以下方式禁用它们:
<a class="clientsideButton" href="#" onclick="javascript:return false">click here</a>
并在事后启用它们。
别忘了在部分回发后再次重新绑定它们!
<script>
$(function() {
$(".clientsideButton").on("click",
function() {
// Make AJAX request.
});
});
</script>
https://stackoverflow.com/questions/50768412
复制相似问题