soiz1 commited on
Commit
28fe881
·
1 Parent(s): a61d8a9

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +93 -18
index.html CHANGED
@@ -753,10 +753,52 @@ document.addEventListener('DOMContentLoaded', function() {
753
  <div class="settings">
754
 
755
  <h2>サービスワーカー設定</h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
756
  <button class="combine-button" id="sw-register-btn">登録を開始</button>
757
  <div class="combine-status" id="sw-status"></div>
758
  <script>
759
- document.getElementById('sw-register-btn').addEventListener('click', async () => {
760
  const statusElem = document.getElementById('sw-status');
761
 
762
  function updateStatus(message) {
@@ -779,35 +821,68 @@ document.addEventListener('DOMContentLoaded', function() {
779
  updateStatus('既存のService Workerをアンレジスター中...');
780
 
781
  const registrations = await navigator.serviceWorker.getRegistrations();
782
- if (registrations.length === 0) {
783
- updateStatus('登録されているService Workerはありません。');
784
- } else {
785
- for (const registration of registrations) {
786
- try {
787
- const success = await registration.unregister();
788
- if (success) {
789
- updateStatus('Service Workerをアンレジスターしました。');
790
- } else {
791
- updateStatus('Service Workerのアンレジスターに失敗しました。');
792
- }
793
- } catch (unregErr) {
794
- updateError('Service Workerのアンレジスター中に例外が発生しました。', unregErr);
795
- return;
796
- }
797
  }
798
  }
799
 
800
  updateStatus('アンレジスター完了。新しいService Workerを登録中...');
801
 
802
- // 少し待機してから新しいSWを登録
803
  setTimeout(async () => {
804
  try {
805
  const newRegistration = await navigator.serviceWorker.register('/sw.js');
806
  updateStatus('Service Workerが正常に登録されました。\n登録範囲: ' + newRegistration.scope);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
807
  } catch (regErr) {
808
  updateError('Service Workerの登録に失敗しました。', regErr);
809
  }
810
- }, 300);
811
  } catch (err) {
812
  updateError('Service Workerの処理中に致命的なエラーが発生しました。', err);
813
  }
 
753
  <div class="settings">
754
 
755
  <h2>サービスワーカー設定</h2>
756
+ <div class="setting-item">
757
+ <label><input type="checkbox" id="sw-video" checked> 動画ファイル (/v.mp4)</label>
758
+ </div>
759
+ <div class="setting-item">
760
+ <label><input type="checkbox" id="sw-t-video" checked> 動画ファイル (/t/v.mp4)</label>
761
+ </div><br>
762
+ <div class="setting-item">
763
+ <label><input type="checkbox" id="sw-piano" checked> ピアノ音声 (/p.mp3)</label>
764
+ </div>
765
+ <div class="setting-item">
766
+ <label><input type="checkbox" id="sw-soprano" checked> ソプラノ音声 (/s.mp3)</label>
767
+ </div>
768
+ <div class="setting-item">
769
+ <label><input type="checkbox" id="sw-alto" checked> アルト音声 (/a.mp3)</label>
770
+ </div>
771
+ <div class="setting-item">
772
+ <label><input type="checkbox" id="sw-tenor" checked> テノール音声 (/t.mp3)</label>
773
+ </div>
774
+ <div class="setting-item">
775
+ <label><input type="checkbox" id="sw-combined" checked> 全体音声 (/k.mp3)</label>
776
+ </div><br>
777
+ <div class="setting-item">
778
+ <label><input type="checkbox" id="sw-t-piano" checked> ピアノ音声 (/t/p.mp3)</label>
779
+ </div>
780
+ <div class="setting-item">
781
+ <label><input type="checkbox" id="sw-t-soprano" checked> ソプラノ音声 (/t/s.mp3)</label>
782
+ </div>
783
+ <div class="setting-item">
784
+ <label><input type="checkbox" id="sw-t-alto" checked> アルト音声 (/t/a.mp3)</label>
785
+ </div>
786
+ <div class="setting-item">
787
+ <label><input type="checkbox" id="sw-t-tenor" checked> テノール音声 (/t/t.mp3)</label>
788
+ </div>
789
+ <div class="setting-item">
790
+ <label><input type="checkbox" id="sw-t-combined" checked> 全体音声 (/t/k.mp3)</label>
791
+ </div><br>
792
+ <div class="setting-item">
793
+ <label><input type="checkbox" id="sw-index" checked> インデックスファイル (/index.html)</label>
794
+ </div>
795
+ <div class="setting-item">
796
+ <label><input type="checkbox" id="sw-root" checked> ルートファイル (/)</label>
797
+ </div>
798
  <button class="combine-button" id="sw-register-btn">登録を開始</button>
799
  <div class="combine-status" id="sw-status"></div>
800
  <script>
801
+ document.getElementById('sw-register-btn').addEventListener('click', async () => {
802
  const statusElem = document.getElementById('sw-status');
803
 
804
  function updateStatus(message) {
 
821
  updateStatus('既存のService Workerをアンレジスター中...');
822
 
823
  const registrations = await navigator.serviceWorker.getRegistrations();
824
+ for (const registration of registrations) {
825
+ try {
826
+ await registration.unregister();
827
+ updateStatus('Service Workerをアンレジスターしました。');
828
+ } catch (unregErr) {
829
+ updateError('Service Workerのアンレジスター中に例外が発生しました。', unregErr);
830
+ return;
 
 
 
 
 
 
 
 
831
  }
832
  }
833
 
834
  updateStatus('アンレジスター完了。新しいService Workerを登録中...');
835
 
 
836
  setTimeout(async () => {
837
  try {
838
  const newRegistration = await navigator.serviceWorker.register('/sw.js');
839
  updateStatus('Service Workerが正常に登録されました。\n登録範囲: ' + newRegistration.scope);
840
+
841
+ // チェックボックスの状態からファイルリストを作成
842
+ const fileMap = {
843
+ 'sw-video': '/v.mp4',
844
+ 'sw-t-video': '/t/v.mp4',
845
+ 'sw-piano': '/p.mp3',
846
+ 'sw-soprano': '/s.mp3',
847
+ 'sw-alto': '/a.mp3',
848
+ 'sw-tenor': '/t.mp3',
849
+ 'sw-combined': '/k.mp3',
850
+ 'sw-t-piano': '/t/p.mp3',
851
+ 'sw-t-soprano': '/t/s.mp3',
852
+ 'sw-t-alto': '/t/a.mp3',
853
+ 'sw-t-tenor': '/t/t.mp3',
854
+ 'sw-t-combined': '/t/k.mp3',
855
+ 'sw-index': '/index.html',
856
+ 'sw-root': '/',
857
+ };
858
+
859
+ // チェックされているものだけ抽出
860
+ const filesToCache = [];
861
+ const checkboxStates = {};
862
+ for (const [id, url] of Object.entries(fileMap)) {
863
+ const checkbox = document.getElementById(id);
864
+ if (!checkbox) continue;
865
+ checkboxStates[id] = checkbox.checked;
866
+ if (checkbox.checked) {
867
+ filesToCache.push(url);
868
+ }
869
+ }
870
+
871
+ // SWがコントロール中ならメッセージ送信
872
+ if (navigator.serviceWorker.controller) {
873
+ navigator.serviceWorker.controller.postMessage({
874
+ type: 'CACHE_FILES',
875
+ files: filesToCache,
876
+ checkboxStates: checkboxStates,
877
+ });
878
+ updateStatus('キャッシュ更新のメッセージをサービスワーカーに送信しました。');
879
+ } else {
880
+ updateStatus('サービスワーカーがコントロール中ではありません。キャッシュ更新メッセージは送信できません。');
881
+ }
882
  } catch (regErr) {
883
  updateError('Service Workerの登録に失敗しました。', regErr);
884
  }
885
+ }, 500);
886
  } catch (err) {
887
  updateError('Service Workerの処理中に致命的なエラーが発生しました。', err);
888
  }