V.AISTUDIO / auto-excel-fix-loader.js
bep40's picture
Upload auto-excel-fix-loader.js
3b63ecd verified
Raw
History Blame
2.18 kB
/**
* V.AI STUDIO - Auto Excel Fix Loader v2.0
* Tự động tải fix script nếu chưa có, inject vào cuối body
*/
(function() {
'use strict';
// Kiểm tra xem file fix đã tồn tại chưa
var fixFile = 'vai-quote-excel-order-fix-v1050.js';
// Kiểm tra script đã load chưa
function checkFixLoaded() {
return typeof window.VAI_FIX !== 'undefined' ||
document.querySelector('script[src*="vai-quote-excel-order-fix"]');
}
// Inject script tag
function injectFix() {
if (checkFixLoaded()) {
console.log('[Auto Loader] Fix script already loaded');
return;
}
var script = document.createElement('script');
script.src = '/' + fixFile + '?v=' + Date.now();
script.onload = function() {
console.log('[Auto Loader] Excel fix script loaded successfully');
};
script.onerror = function() {
console.warn('[Auto Loader] Failed to load fix script, using inline fallback');
applyInlineFix();
};
document.head.appendChild(script);
}
// Inline fix fallback
function applyInlineFix() {
// Patch URL.revokeObjectURL
var originalRevoke = URL.revokeObjectURL;
URL.revokeObjectURL = function(url) {
if (url && url.startsWith('blob:')) {
setTimeout(function() {
try { originalRevoke.call(URL, url); } catch(e) {}
}, 300000);
return;
}
return originalRevoke.apply(this, arguments);
};
console.log('[Auto Loader] Inline fix applied');
}
// Chờ DOM ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', injectFix);
} else {
injectFix();
}
// Thử lại sau 2s nếu chưa load
setTimeout(injectFix, 2000);
setTimeout(injectFix, 5000);
})();
// Legacy support for older fix loaders
window.__VAI_BLOB_REGISTRY = window.__VAI_BLOB_REGISTRY || { blobs: [], registry: [], isUnloading: false };