Update index.html
Browse files- index.html +58 -42
index.html
CHANGED
@@ -764,50 +764,66 @@ if ('serviceWorker' in navigator) {
|
|
764 |
<div class="settings">
|
765 |
|
766 |
<h2>サービスワーカー設定</h2>
|
767 |
-
<div hidden><div class="setting-item">
|
768 |
-
<label><input type="checkbox" id="sw-video" checked> 動画ファイル (/v.mp4)</label>
|
769 |
-
</div>
|
770 |
-
<div class="setting-item">
|
771 |
-
<label><input type="checkbox" id="sw-t-video" checked> 動画ファイル (/t/v.mp4)</label>
|
772 |
-
</div><br>
|
773 |
-
<div class="setting-item">
|
774 |
-
<label><input type="checkbox" id="sw-piano" checked> ピアノ音声 (/p.mp3)</label>
|
775 |
-
</div>
|
776 |
-
<div class="setting-item">
|
777 |
-
<label><input type="checkbox" id="sw-soprano" checked> ソプラノ音声 (/s.mp3)</label>
|
778 |
-
</div>
|
779 |
-
<div class="setting-item">
|
780 |
-
<label><input type="checkbox" id="sw-alto" checked> アルト音声 (/a.mp3)</label>
|
781 |
-
</div>
|
782 |
-
<div class="setting-item">
|
783 |
-
<label><input type="checkbox" id="sw-tenor" checked> テノール音声 (/t.mp3)</label>
|
784 |
-
</div>
|
785 |
-
<div class="setting-item">
|
786 |
-
<label><input type="checkbox" id="sw-combined" checked> 全体音声 (/k.mp3)</label>
|
787 |
-
</div><br>
|
788 |
-
<div class="setting-item">
|
789 |
-
<label><input type="checkbox" id="sw-t-piano" checked> ピアノ音声 (/t/p.mp3)</label>
|
790 |
-
</div>
|
791 |
-
<div class="setting-item">
|
792 |
-
<label><input type="checkbox" id="sw-t-soprano" checked> ソプラノ音声 (/t/s.mp3)</label>
|
793 |
-
</div>
|
794 |
-
<div class="setting-item">
|
795 |
-
<label><input type="checkbox" id="sw-t-alto" checked> アルト音声 (/t/a.mp3)</label>
|
796 |
-
</div>
|
797 |
-
<div class="setting-item">
|
798 |
-
<label><input type="checkbox" id="sw-t-tenor" checked> テノール音声 (/t/t.mp3)</label>
|
799 |
-
</div>
|
800 |
-
<div class="setting-item">
|
801 |
-
<label><input type="checkbox" id="sw-t-combined" checked> 全体音声 (/t/k.mp3)</label>
|
802 |
-
</div><br>
|
803 |
-
<div class="setting-item">
|
804 |
-
<label><input type="checkbox" id="sw-index" checked> インデックスファイル (/index.html)</label>
|
805 |
-
</div>
|
806 |
-
<div class="setting-item">
|
807 |
-
<label><input type="checkbox" id="sw-root" checked> ルートファイル (/)</label>
|
808 |
-
</div></div>
|
809 |
<button class="combine-button" id="sw-register-btn">登録を開始</button>
|
810 |
<div class="combine-status" id="sw-status"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
811 |
</div>
|
812 |
<div class="container">
|
813 |
<div class="video-container" id="video-container">
|
|
|
764 |
<div class="settings">
|
765 |
|
766 |
<h2>サービスワーカー設定</h2>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
767 |
<button class="combine-button" id="sw-register-btn">登録を開始</button>
|
768 |
<div class="combine-status" id="sw-status"></div>
|
769 |
+
<script>
|
770 |
+
document.getElementById('sw-register-btn').addEventListener('click', async () => {
|
771 |
+
const statusElem = document.getElementById('sw-status');
|
772 |
+
|
773 |
+
function updateStatus(message) {
|
774 |
+
console.log(message);
|
775 |
+
statusElem.textContent = message;
|
776 |
+
}
|
777 |
+
|
778 |
+
function updateError(message, error) {
|
779 |
+
const errorMsg = `${message}\nエラー詳細: ${error?.message || error}`;
|
780 |
+
console.error(errorMsg, error);
|
781 |
+
statusElem.textContent = errorMsg;
|
782 |
+
}
|
783 |
+
|
784 |
+
if (!('serviceWorker' in navigator)) {
|
785 |
+
updateError('このブラウザはService Workerに対応していません。');
|
786 |
+
return;
|
787 |
+
}
|
788 |
+
|
789 |
+
try {
|
790 |
+
updateStatus('既存のService Workerをアンレジスター中...');
|
791 |
+
|
792 |
+
const registrations = await navigator.serviceWorker.getRegistrations();
|
793 |
+
if (registrations.length === 0) {
|
794 |
+
updateStatus('登録されているService Workerはありません。');
|
795 |
+
} else {
|
796 |
+
for (const registration of registrations) {
|
797 |
+
try {
|
798 |
+
const success = await registration.unregister();
|
799 |
+
if (success) {
|
800 |
+
updateStatus('Service Workerをアンレジスターしました。');
|
801 |
+
} else {
|
802 |
+
updateStatus('Service Workerのアンレジスターに失敗しました。');
|
803 |
+
}
|
804 |
+
} catch (unregErr) {
|
805 |
+
updateError('Service Workerのアンレジスター中に例外が発生しました。', unregErr);
|
806 |
+
return;
|
807 |
+
}
|
808 |
+
}
|
809 |
+
}
|
810 |
+
|
811 |
+
updateStatus('アンレジスター完了。新しいService Workerを登録中...');
|
812 |
+
|
813 |
+
// 少し待機してから新しいSWを登録
|
814 |
+
setTimeout(async () => {
|
815 |
+
try {
|
816 |
+
const newRegistration = await navigator.serviceWorker.register('/sw.js');
|
817 |
+
updateStatus('Service Workerが正常に登録されました。\n登録範囲: ' + newRegistration.scope);
|
818 |
+
} catch (regErr) {
|
819 |
+
updateError('Service Workerの登録に失敗しました。', regErr);
|
820 |
+
}
|
821 |
+
}, 300);
|
822 |
+
} catch (err) {
|
823 |
+
updateError('Service Workerの処理中に致命的なエラーが発生しました。', err);
|
824 |
+
}
|
825 |
+
});
|
826 |
+
</script>
|
827 |
</div>
|
828 |
<div class="container">
|
829 |
<div class="video-container" id="video-container">
|