DawnC commited on
Commit
7e1d4db
·
1 Parent(s): 7fb88f9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -28
app.py CHANGED
@@ -443,38 +443,73 @@ def main():
443
 
444
  gr.HTML("""
445
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
446
- <meta name="apple-mobile-web-app-capable" content="yes">
447
- <meta name="apple-mobile-web-app-status-bar-style" content="black">
448
- <meta name="apple-mobile-web-app-title" content="PawMatch AI">
449
- <meta name="theme-color" content="#4299e1">
450
-
451
- <!-- PWA 必要檔案的連結,使用相對路徑 -->
452
- <link rel="manifest" href="manifest.json">
453
- <link rel="apple-touch-icon" href="assets/icon-192.png">
454
-
455
- <!-- Service Worker 註冊程序 -->
456
  <script>
457
- // 等待頁面完全載入後再註冊 Service Worker
458
- document.addEventListener('DOMContentLoaded', function() {
459
- // 確保我們不是在 iframe 中執行
460
- if (window.self === window.top) {
461
- // 確認瀏覽器支援 Service Worker
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
462
  if ('serviceWorker' in navigator) {
463
- // 使用相對路徑註冊 Service Worker
464
- navigator.serviceWorker.register('service-worker.js')
465
- .then(function(registration) {
466
- console.log('Service Worker 註冊成功,範圍:', registration.scope);
467
- })
468
- .catch(function(error) {
469
- console.log('Service Worker 註冊失敗:', error);
470
  });
471
- } else {
472
- console.log('此瀏覽器不支援 Service Worker');
473
  }
474
- } else {
475
- console.log('在 iframe 中執行,跳過 Service Worker 註冊');
476
- }
477
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
478
  </script>
479
  """)
480
 
 
443
 
444
  gr.HTML("""
445
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
 
 
 
 
 
 
 
 
 
446
  <script>
447
+ console.log('基本初始化測試');
448
+ </script>
449
+ """)
450
+
451
+ gr.HTML("""
452
+ <script>
453
+ // 檢查環境
454
+ console.log('當前 URL:', window.location.href);
455
+ console.log('是否在 iframe 中:', window !== window.top);
456
+
457
+ // 檢查檔案存取
458
+ async function checkFiles() {
459
+ try {
460
+ const swResponse = await fetch('service-worker.js');
461
+ console.log('Service Worker 回應:', {
462
+ status: swResponse.status,
463
+ type: swResponse.headers.get('content-type')
464
+ });
465
+
466
+ const manifestResponse = await fetch('manifest.json');
467
+ console.log('Manifest 回應:', {
468
+ status: manifestResponse.status,
469
+ type: manifestResponse.headers.get('content-type')
470
+ });
471
+ } catch (error) {
472
+ console.error('檔案檢查錯誤:', error);
473
+ }
474
+ }
475
+
476
+ // 在頁面載入後執行檢查
477
+ window.addEventListener('load', checkFiles);
478
+ </script>
479
+ """)
480
+
481
+ gr.HTML("""
482
+ <script>
483
+ // 確保在正確的環境中執行
484
+ if (window.self === window.top) { // 不在 iframe 中
485
+ // 等待 Gradio 完全初始化
486
+ const initPWA = () => {
487
  if ('serviceWorker' in navigator) {
488
+ navigator.serviceWorker.register('service-worker.js', {
489
+ scope: './'
490
+ }).then(registration => {
491
+ console.log('PWA 註冊成功:', registration.scope);
492
+ }).catch(error => {
493
+ console.error('PWA 註冊失敗:', error);
 
494
  });
 
 
495
  }
496
+ };
497
+
498
+ // 使用 MutationObserver 確保在 Gradio 界面完全載入後才初始化 PWA
499
+ const observer = new MutationObserver((mutations, obs) => {
500
+ const gradioApp = document.querySelector('.gradio-app');
501
+ if (gradioApp) {
502
+ console.log('Gradio 界面已載入');
503
+ initPWA();
504
+ obs.disconnect();
505
+ }
506
+ });
507
+
508
+ observer.observe(document, {
509
+ childList: true,
510
+ subtree: true
511
+ });
512
+ }
513
  </script>
514
  """)
515