update 4page

This commit is contained in:
2026-07-02 18:15:06 +08:00
parent 4d30803b60
commit 296db4a164
53 changed files with 5271 additions and 60 deletions
+62
View File
@@ -0,0 +1,62 @@
/**
* Loads challenge-floor.section.html into #challenge-floor-module, then boots render scripts.
*/
(function () {
var MODULE_URL = '/pages/modules/challenge-floor.section.html';
var PROGRAM_DATA_URL = '/assets/js/challenge-floor-program-data.js';
var RENDER_URL = '/assets/js/challenge-floor-render.js';
function loadScript(src) {
return new Promise(function (resolve, reject) {
if (document.querySelector('script[src="' + src + '"]')) {
resolve();
return;
}
var script = document.createElement('script');
script.src = src;
script.onload = resolve;
script.onerror = function () {
reject(new Error('Failed to load ' + src));
};
document.body.appendChild(script);
});
}
function bootChallengeFloor() {
window.CHALLENGE_FLOOR_BOOT = window.CHALLENGE_FLOOR_BOOT || {};
if (!window.CHALLENGE_FLOOR_BOOT.assetBase) {
window.CHALLENGE_FLOOR_BOOT.assetBase = '../assets/images/challenge/';
}
return loadScript(PROGRAM_DATA_URL).then(function () {
return loadScript(RENDER_URL);
});
}
function loadChallengeFloorModule() {
var container = document.getElementById('challenge-floor-module');
if (!container) return;
fetch(MODULE_URL, { credentials: 'same-origin' })
.then(function (res) {
if (!res.ok) throw new Error('Failed to load ' + MODULE_URL);
return res.text();
})
.then(function (html) {
container.innerHTML = html;
return bootChallengeFloor();
})
.then(function () {
document.dispatchEvent(new CustomEvent('aifo:challenge-floor-ready'));
})
.catch(function (err) {
console.error('[challenge-floor-module.js]', err);
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', loadChallengeFloorModule);
} else {
loadChallengeFloorModule();
}
})();