当用户单击下载按钮/链接时,页面上将显示加载屏幕。下载过程完成后,我在此按钮上使用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中运行,但我不了解所有其他语言。
顺便说一句:我将“加载屏幕”称为“加载指示器”,因为加载屏幕(或启动屏幕)是在软件加载之前(至少在我的计算机/大脑上)显示一次的图片。
添加回答
举报
0/150
提交
取消