在页面卸载之前显示加载 GIF

Posted

技术标签:

【中文标题】在页面卸载之前显示加载 GIF【英文标题】:Show a loading GIF BeforeUnload Of a Page 【发布时间】:2013-02-11 04:59:21 【问题描述】:

我正在开发一个可以在计算机以及 Ipad、Iphone、平板电脑和 android 手机上运行的应用程序。当用户从一个页面移动到另一个页面时,我有一个显示 loading... gif 的要求,因为这将为用户提供页面加载/卸载正在进行中的信息。

所以我尝试了下面提到的代码 ///下面的代码用于在 DOM 未准备好时显示 GIF。

$(document).ready(function()
  $("#loading").hide(););

//下面的代码用于在用户单击某个按钮进行某些服务器交互时显示 GIF。

$(window).bind('beforeunload',function() 
      $("#loading").show(););

#loading 是包含我的 GIF 代码的 div 的 id。 现在这在 PC 浏览器上非常有效,但在 Ipad、Iphone 和安卓手机上却没有。我不知道为什么。

<div id="loading">
  <img id="loading-image" src="/img/loading.gif"  /></div>

此 div 用于加载 GIF。

【问题讨论】:

ios 上没有onbeforeunload 事件。你必须找到另一种显示加载的方式。为什么不使用ajax?见***.com/questions/6205989/… @YoannM 感谢您的帮助,但是当我们从一个页面移动到另一个页面时,我们如何使用 Ajax?这就是我寻找 jquery/javascript 替代品的原因。 您可以从当前页面获取其他页面的内容。然后用新内容替换当前内容。这只是一个ajax调用。照顾 jQuery $.ajax 函数:api.jquery.com/jQuery.ajax 【参考方案1】:

我使用“window.onbeforeunload”事件和 jquery-loading-overlay

链接: https://gasparesganga.com/labs/jquery-loading-overlay/

完整代码在这里

<!-- also link to jquery.js -->
<script src="https://cdn.jsdelivr.net/npm/gasparesganga-jquery-loading-overlay@2.1.6/dist/loadingoverlay.min.js"></script>

<script>
    window.onbeforeunload = function () 
        // Show Loding
        $.LoadingOverlay("show");

        // Disable javascript default confirm message
        //return "Are you sure you wish to leave the page?";
        return undefined;
    ;

    // If Canceled by user
    $(document).keyup(function (e) 
        if (e.key === "Escape") 
            $.LoadingOverlay("hide");
        
    );
</script>

【讨论】:

经过几天的搜索,这对我有用。非常感谢!!【参考方案2】:

试试unload

$(window).unload(function()

    $('body').html('<img src="img/4.gif"  />');
);

【讨论】:

它是因为浏览器发送其他 http 请求并清除旧数据,因此在加载新页面之前和卸载旧页面之后没有代码可以运行...

以上是关于在页面卸载之前显示加载 GIF的主要内容,如果未能解决你的问题,请参考以下文章

Android加载网络GIF完整解决方案

显示在页面中间的加载gif

在页面加载前先出现加载loading,页面加载完成之后再显示页面

在每次页面访问或页面重新加载时显示一个新的 GIF

在页面中加载 gif:未能加载资源 Cordova

页面加载后运行循环 VB.NET