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

jQuery中已弃用的$.holdReady(hold)替代方案咨询

替代已弃用的$.holdReady的方案

你原来的代码逻辑是通过暂停jQuery的ready事件,等待配置脚本econfig加载完成后再恢复事件触发,以此保证DOM就绪和配置加载完成后才执行后续业务代码。针对$.holdReady被弃用的情况,有两种简洁的替代方案:

方案一:使用原生JavaScript(无jQuery依赖)

直接通过Promise管理DOM就绪和脚本加载的异步流程,代码更轻量化:

async function initApp() {
  // 等待DOM加载完成
  await new Promise(resolve => {
    if (document.readyState === "complete" || document.readyState === "interactive") {
      resolve();
    } else {
      document.addEventListener("DOMContentLoaded", resolve);
    }
  });

  // 加载配置脚本
  await new Promise((resolve, reject) => {
    const script = document.createElement("script");
    script.src = "econfig";
    script.onload = resolve;
    script.onerror = reject;
    document.head.appendChild(script);
  });

  // 此处编写原$(document).ready内的业务逻辑
  console.log("DOM就绪且配置加载完成,开始执行逻辑");
}

// 初始化并捕获错误
initApp().catch(err => console.error("初始化失败:", err));

方案二:基于jQuery的替代写法

如果项目仍依赖jQuery,可以用$.when同时等待DOM就绪和脚本加载完成:

$.when(
  $(document).ready(), // 等待DOM就绪
  $.getScript("econfig") // 加载配置脚本
).done(function() {
  // 业务逻辑写在这里,确保DOM和配置都已就绪
}).fail(function(error) {
  console.error("加载失败:", error);
});

这两种方案都能实现原代码的核心需求,且符合现代异步代码的规范,避免使用已弃用的API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:14:59