// process/index.js // 创建一个包含所有将要导出函数的对象 // 这个对象作为模块的命名空间,用于集中管理和暴露 process 子模块中的功能。 // 在所有相关脚本加载完成后,这些函数会被挂载到全局 window 对象,以兼容旧的调用方式。 const processModule = { // 工具函数 getRetryDelay: null, estimateTokenCount: null, escapeRegex: null, // OCR处理 processOcrResults: null, // 表格处理 protectMarkdownTables: null, extractTableFromTranslation: null, restoreMarkdownTables: null, // 翻译相关 buildPredefinedApiConfig: null, buildCustomApiConfig: null, translateMarkdown: null, // 文档处理 splitMarkdownIntoChunks: null, splitByParagraphs: null, translateLongDocument: null, // 下载功能 downloadAllResults: null, // 主处理流程 processSinglePdf: null }; // 在各模块加载完成后执行此函数,将所有函数挂载到全局 /** * 初始化处理模块 (processModule)。 * 此函数在所有依赖的 process 子模块脚本 (`utils.js`, `ocr.js`, 等) 加载完成后被调用。 * 它的主要作用是将 `processModule` 对象中收集到的所有函数挂载到全局 `window` 对象上, * 这样做是为了确保旧的、直接通过 `window.functionName()` 方式调用这些处理函数的地方能够继续工作。 * * 遍历 `processModule` 中的每一个键值对: * - 如果值 (函数) 不为 `null` (即已成功加载并赋值),则 `window[key] = value`。 * - 如果值为 `null`,则在控制台打印一个警告,表明对应的函数未能正确加载。 * 最后,在控制台打印一条消息,表示模块加载和函数暴露已完成。 */ function initializeProcessModule() { console.log('index.js: initializeProcessModule STARTING...'); console.log('index.js: typeof processModule at init start:', typeof processModule); if (typeof processModule !== 'undefined') { console.log('index.js: processModule keys at init start:', Object.keys(processModule)); console.log('index.js: typeof processModule.processSinglePdf at init start:', typeof processModule.processSinglePdf); } Object.entries(processModule).forEach(([key, value]) => { if (value !== null) { window[key] = value; } else { // 在这里添加更详细的日志 console.warn(`index.js: Function ${key} was not loaded correctly. Value is null.`); console.log(`index.js: Checking processModule.${key} again:`, processModule[key]); } }); console.log("index.js: Process module loaded and functions exposed to global scope (initializeProcessModule ENDING)"); } // 动态加载所有模块的脚本 /** * 动态加载所有 `process` 子模块的 JavaScript 文件。 * 这种方式允许按需或延迟加载这些处理逻辑,而不是在页面初始加载时就全部引入。 * * 主要步骤: * 1. **定义脚本列表**:`scripts` 数组包含所有需要加载的子模块脚本的路径。 * 2. **计数器初始化**:`loaded` 变量用于跟踪已成功加载的脚本数量。 * 3. **遍历并创建 script 标签**: * - 对 `scripts` 数组中的每个路径: * - 创建一个新的 `