为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查Chrome中的文件下载是否完成?

如何检查Chrome中的文件下载是否完成?

慕无忌1623718 2021-04-28 13:42:54
当用户单击下载按钮/链接时,页面上将显示加载屏幕。下载过程完成后,我在此按钮上使用onblur事件隐藏我的加载屏幕。它可以在任何浏览器上正常运行,但不能在谷歌浏览器上运行。我可以在Chrome浏览器中使用任何事件监听器或其他简单方法吗?关联:<a href="/resources/foo" class="show-ls" onblur="hideLS()">Download</a>show-ls函数仅显示加载屏幕:$('.show-ls').click(function () {  $('#loading-screen').show();});加载屏幕是正文中的div元素:<div id="loading-screen" class="loading-screen" style=""></div>.loading-screen {  background: rgba(255, 255, 255, 0.6) url('/images/loadingscreen.gif') no-repeat fixed center center;  width: 100%;  height: 100%;  position: fixed;}hideLS函数只是隐藏加载屏幕:hideLS= function () {  var loadingScreen = $('div.loading-screen');  if (loadingScreen.length > 0)    loadingScreen.hide();};下载过程可以,加载屏幕也可以。问题仅在于在Chrome中完成文件下载后隐藏加载屏幕。
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

blur事件只是一个脆弱的解决方法,可能无法在浏览器中运行。

blur事件意味着某件事正在失去焦点。可能是Firefox浏览器(及其他)确实确实模糊了您单击的链接,但其他任何东西也可能模糊了该链接(更改选项卡,单击加载屏幕等)。这可能是您不想要的。

而且由于HTTP是一种无状态协议,因此在没有服务器帮助的情况下,我们无法知道客户端何时完成此操作。而且您不能依靠JS来检测到此错误,因为文件下载是在“其他选项卡”中进行的,而您无法访问该文件。

我可以想象的唯一解决方案(看起来也是如此):当下载开始时,启动一个JS间隔,该间隔定期(例如每500毫秒左右)检查服务器的下载状态。在服务器端,您必须在启动时向用户标识下载,并在询问时将状态返回给客户端。当然,这如何工作取决于您使用的服务器环境和编程语言。我知道,您可以使其在PHP中运行,但我不了解所有其他语言。

顺便说一句:我将“加载屏幕”称为“加载指示器”,因为加载屏幕(或启动屏幕)是在软件加载之前(至少在我的计算机/大脑上)显示一次的图片。


查看完整回答
反对 回复 2021-05-13
?
偶然的你

TA贡献1841条经验 获得超3个赞

如果您拥有Google帐户,则只需按Ctrl + J或转到chrome:// downloads /


查看完整回答
反对 回复 2021-05-13
  • 2 回答
  • 0 关注
  • 774 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信