ui.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. function createLoading(message = '文件加载中...') {
  2. const overlay = document.createElement('div');
  3. overlay.className = 'loading-overlay';
  4. overlay.innerHTML = `
  5. <div class="loading-spinner"></div>
  6. <p>${message}</p>
  7. `.trim();
  8. // Body 在某些 hybrid WebView 中可能尚未生成,需等待可用后再挂载遮罩层
  9. const mountOverlay = () => {
  10. const host = document.body || document.documentElement;
  11. if (!host) {
  12. return false;
  13. }
  14. host.appendChild(overlay);
  15. return true;
  16. };
  17. if (!mountOverlay()) {
  18. const handleReady = () => {
  19. if (mountOverlay()) {
  20. document.removeEventListener('DOMContentLoaded', handleReady);
  21. }
  22. };
  23. if (document.readyState === 'loading') {
  24. document.addEventListener('DOMContentLoaded', handleReady);
  25. } else {
  26. handleReady();
  27. }
  28. }
  29. return {
  30. show() {
  31. overlay.classList.remove('hidden');
  32. },
  33. hide() {
  34. overlay.classList.add('hidden');
  35. setTimeout(() => overlay.remove(), 200);
  36. }
  37. };
  38. }