soiz1 commited on
Commit
f1447dc
·
1 Parent(s): b254b06

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +60 -57
index.html CHANGED
@@ -1006,74 +1006,77 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1006
  <div class="combine-status" id="sw-status">
1007
  </div>
1008
  <script>
1009
- window.addEventListener('load', async () => {
1010
- const statusElem = document.getElementById('sw-status');
1011
- const registerBtn = document.getElementById('sw-register-btn');
1012
 
1013
- function updateStatus(message) {
1014
- console.log(message);
1015
- statusElem.textContent = message;
1016
- }
1017
 
1018
- function updateError(message, error) {
1019
- const errorMsg = `${message}\nエラー詳細: ${error?.message || error}`;
1020
- console.error(errorMsg, error);
1021
- statusElem.textContent = errorMsg;
1022
- }
 
 
 
 
 
1023
 
1024
- if (!('serviceWorker' in navigator)) {
1025
- updateError('このブラウザはService Workerに対応していません。');
1026
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1027
  }
 
 
 
1028
 
 
 
1029
  try {
1030
- const reg = await navigator.serviceWorker.getRegistration();
1031
- if (reg) {
1032
- updateStatus('Service Workerは既に登録されています。更新を確認中...');
1033
- await reg.update();
1034
- reg.onupdatefound = () => {
1035
- const newSW = reg.installing;
1036
- if (newSW) {
1037
- newSW.onstatechange = () => {
1038
- if (newSW.state === 'installed' && navigator.serviceWorker.controller) {
1039
- updateStatus('新しいService Workerがインストールされました。');
1040
- registerBtn.textContent = '更新を開始';
1041
- registerBtn.disabled = false;
1042
- }
1043
- };
1044
- }
1045
- };
1046
- } else {
1047
- updateStatus('Service Workerは未登録です。');
1048
- registerBtn.textContent = '登録とキャッシュ';
1049
- registerBtn.disabled = false;
1050
  }
1051
- } catch (err) {
1052
- updateError('Service Workerの確認中にエラーが発生しました。', err);
1053
- }
1054
-
1055
- registerBtn.addEventListener('click', async () => {
1056
- registerBtn.disabled = true;
1057
- try {
1058
- updateStatus('既存のService Workerをアンレジスター中...');
1059
- const regs = await navigator.serviceWorker.getRegistrations();
1060
- for (const reg of regs) {
1061
- await reg.unregister();
1062
- }
1063
 
1064
- updateStatus('新しいService Workerを登録中...');
1065
- await navigator.serviceWorker.register('/sw.js');
1066
 
1067
- updateStatus('登録完了。ページをリロードしてキャッシュを有効化します。');
1068
- registerBtn.textContent = 'ページをリロード';
1069
- registerBtn.disabled = false;
1070
 
1071
- registerBtn.onclick = () => location.reload();
1072
- } catch (err) {
1073
- updateError('Service Workerの登録に失敗しました。', err);
1074
- }
1075
- });
1076
  });
 
1077
  </script>
1078
 
1079
  </div>
 
1006
  <div class="combine-status" id="sw-status">
1007
  </div>
1008
  <script>
1009
+ window.addEventListener('load', async () => {
1010
+ const statusElem = document.getElementById('sw-status');
1011
+ const registerBtn = document.getElementById('sw-register-btn');
1012
 
1013
+ function updateStatus(message) {
1014
+ console.log(message);
1015
+ statusElem.textContent = message;
1016
+ }
1017
 
1018
+ function updateError(message, error) {
1019
+ const errorMsg = `${message}\nエラー詳細: ${error?.message || error}`;
1020
+ console.error(errorMsg, error);
1021
+ statusElem.textContent = errorMsg;
1022
+ }
1023
+
1024
+ if (!('serviceWorker' in navigator)) {
1025
+ updateError('このブラウザはService Workerに対応していません。');
1026
+ return;
1027
+ }
1028
 
1029
+ // 常にボタン有効にする
1030
+ registerBtn.disabled = false;
1031
+
1032
+ try {
1033
+ const reg = await navigator.serviceWorker.getRegistration();
1034
+
1035
+ if (reg) {
1036
+ updateStatus('Service Workerは既に登録されています。更新を確認中...');
1037
+ await reg.update();
1038
+
1039
+ reg.onupdatefound = () => {
1040
+ const newSW = reg.installing;
1041
+ if (newSW) {
1042
+ newSW.onstatechange = () => {
1043
+ if (newSW.state === 'installed' && navigator.serviceWorker.controller) {
1044
+ updateStatus('更新があります。新しいService Workerがインストールされました。');
1045
+ // ボタンは常に押せるので変更不要
1046
+ }
1047
+ };
1048
+ }
1049
+ };
1050
+ } else {
1051
+ updateStatus('Service Workerは未登録です。');
1052
+ // ボタンは常に押せるので変更不要
1053
  }
1054
+ } catch (err) {
1055
+ updateError('Service Workerの確認中にエラーが発生しました。', err);
1056
+ }
1057
 
1058
+ registerBtn.addEventListener('click', async () => {
1059
+ registerBtn.disabled = true;
1060
  try {
1061
+ updateStatus('既存のService Workerをアンレジスター中...');
1062
+ const regs = await navigator.serviceWorker.getRegistrations();
1063
+ for (const reg of regs) {
1064
+ await reg.unregister();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1065
  }
 
 
 
 
 
 
 
 
 
 
 
 
1066
 
1067
+ updateStatus('新しいService Workerを登録中...');
1068
+ await navigator.serviceWorker.register('/sw.js');
1069
 
1070
+ updateStatus('登録完了。ページをリロードしてキャッシュを有効化します。');
1071
+ registerBtn.textContent = 'ページをリロード';
1072
+ registerBtn.disabled = false;
1073
 
1074
+ registerBtn.onclick = () => location.reload();
1075
+ } catch (err) {
1076
+ updateError('Service Workerの���録に失敗しました。', err);
1077
+ }
 
1078
  });
1079
+ });
1080
  </script>
1081
 
1082
  </div>