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

时间:2019-04-26 09:33:50

标签: javascript html google-chrome browser

当用户单击下载按钮/链接时,页面上将显示加载屏幕。下载过程完成后,我在此按钮上使用onblur事件隐藏我的加载屏幕。它可以在任何浏览器上正常运行,但不适用于Google Chrome。

我可以在Chrome浏览器中使用任何事件监听器或其他简单方式吗?

链接:

logb()

show-ls函数仅显示加载屏幕:

logb()

加载屏幕是正文中的div元素:

ilogb()

hideLS函数只会隐藏加载屏幕:

<a href="/resources/foo" class="show-ls" onblur="hideLS()">Download</a>

下载过程正常,加载屏幕也很好。问题仅在于在Chrome中完成文件下载后隐藏加载屏幕。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:-2)

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

相关问题