You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery预加载器无法停止,无法跳转至主页面求助

预加载器一直卡在加载状态,无法进入站点的排查与解决思路

我太懂你折腾了好几个小时却毫无头绪的挫败感了,咱们一步步拆解这个问题,先从最容易排查的点开始:

1. 先删掉重复的初始化代码

你现在写了两次预加载器的初始化:

$('.js-preloader').preloadinator();
$('.js-preloader').preloadinator({
 scroll:false,
 minTime: 2000,
 animation: 'fadeOut',
 animationDuration: 400,
 afterEnableScroll: function() {},
 afterRemovePreloader: function() {},
 });

第一次无配置的初始化会先执行,第二次带配置的初始化会覆盖或者干扰插件内部的状态(比如重新设置了计时的起始时间,或者重复绑定了window.load事件),这很可能导致预加载器的移除逻辑混乱。直接删掉第一行无参数的初始化,只保留带配置的那一段。

2. 验证window.load事件是否正常触发

这个预加载器插件的核心逻辑是等所有页面资源加载完成后(触发window.load事件),再检查最小显示时间是否满足,然后移除预加载器。如果window.load没触发,预加载器就会一直卡在那里。

你可以打开浏览器控制台,输入这段代码测试:

$(window).on('load', function() {
    console.log('页面所有资源加载完成啦!');
});

刷新页面后,如果控制台没打印这句话,说明页面里有资源没加载完成:

  • 打开开发者工具的「Network」面板,查看所有资源的加载状态,找出发出请求后一直处于pending或者返回404/500的资源(比如某个图片、字体、第三方脚本)
  • 修复这些资源的问题(比如替换404图片的地址,移除加载失败的第三方脚本),window.load事件就能正常触发了。

3. 手动测试插件的移除功能是否正常

如果不确定插件本身有没有问题,你可以在控制台手动触发移除操作:

$.fn.preloadinator.removePreloader();

如果预加载器能正常消失,说明插件本身是好的,问题肯定出在window.load事件没触发或者初始化的问题上。

4. 应急方案:改用DOMContentLoaded触发(可选)

如果页面某些资源确实无法快速修复,你可以修改插件的触发逻辑,把等待所有资源加载完成改成等待DOM加载完成就移除预加载器:
找到插件代码里的这段:

$(window).on('load', function() {
 if($.fn.preloadinator.minTimeElapsed()) {
 $.fn.preloadinator.removePreloader();
 } else {
 var now = new Date().getTime(), elapsed = now - start;
 setTimeout($.fn.preloadinator.removePreloader, settings.minTime - elapsed);
 }
 });

替换成:

$(document).ready(function() {
 if($.fn.preloadinator.minTimeElapsed()) {
 $.fn.preloadinator.removePreloader();
 } else {
 var now = new Date().getTime(), elapsed = now - start;
 setTimeout($.fn.preloadinator.removePreloader, settings.minTime - elapsed);
 }
 });

这样只要页面DOM结构加载完成,预加载器就会在满足最小显示时间后消失,不用等所有资源加载完。

5. 最后检查jQuery的引入顺序

确保你是先引入jQuery,再引入预加载器插件,最后写初始化代码,比如:

<script src="jquery.min.js"></script>
<script src="你的预加载器插件.js"></script>
<script>
    // 初始化代码
    $('.js-preloader').preloadinator({
        scroll:false,
        minTime: 2000,
        animation: 'fadeOut',
        animationDuration: 400,
        afterEnableScroll: function() {},
        afterRemovePreloader: function() {},
    });
</script>

如果jQuery在插件之后引入,插件无法正常初始化,也会导致预加载器一直卡住。

先从这几个点排查,应该能解决你的问题!

内容的提问来源于stack exchange,提问作者sleepydev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:12:42