/** * GSAP与Elementor初始化管理器 * 确保GSAP和Elementor的正确初始化顺序 * * @package Nenghui Energy Theme * @since 1.0.0 */ (function() { 'use strict'; // 初始化管理器 const GSAPElementorInitManager = { initialized: false, // 初始化 init: function() { if (this.initialized) return; // 等待DOM加载完成 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => { this.setupInitialization(); }); } else { this.setupInitialization(); } }, // 设置初始化流程 setupInitialization: function() { // 1. 首先等待GSAP加载 this.waitForGSAP(() => { // 2. 然后等待兼容性管理器 this.waitForCompatibilityManager(() => { // 3. 最后初始化兼容性管理器 if (window.GSAPElementorCompatibility) { window.GSAPElementorCompatibility.init(); } // 4. 触发自定义事件,通知其他脚本可以安全使用GSAP this.triggerGSAPReady(); this.initialized = true; }); }); }, // 等待GSAP加载 waitForGSAP: function(callback) { let attempts = 0; const maxAttempts = 50; const checkGSAP = () => { if (window.gsap && window.ScrollTrigger) { callback(); } else if (attempts < maxAttempts) { attempts++; setTimeout(checkGSAP, 100); } else { console.error('GSAP加载超时'); } }; checkGSAP(); }, // 等待兼容性管理器加载 waitForCompatibilityManager: function(callback) { let attempts = 0; const maxAttempts = 50; const checkManager = () => { if (window.GSAPElementorCompatibility) { callback(); } else if (attempts < maxAttempts) { attempts++; setTimeout(checkManager, 100); } else { callback(); // 即使失败也继续执行 } }; checkManager(); }, // 触发GSAP准备就绪事件 triggerGSAPReady: function() { // 创建自定义事件 const gsapReadyEvent = new CustomEvent('gsapReady', { detail: { gsap: window.gsap, ScrollTrigger: window.ScrollTrigger, api: window.GSAPElementorAPI, manager: window.GSAPAnimationManager } }); // 触发事件 document.dispatchEvent(gsapReadyEvent); // 同时设置全局标志 window.GSAPReady = true; } }; // 立即初始化 GSAPElementorInitManager.init(); // 暴露到全局作用域 window.GSAPElementorInitManager = GSAPElementorInitManager; })();