soiz1 commited on
Commit
6834fbd
·
1 Parent(s): c606ff8

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +22 -8
index.html CHANGED
@@ -1021,6 +1021,14 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1021
  statusElem.textContent = errorMsg;
1022
  }
1023
 
 
 
 
 
 
 
 
 
1024
  if (!('serviceWorker' in navigator)) {
1025
  updateError('このブラウザはService Workerに対応していません。');
1026
  return;
@@ -1028,21 +1036,30 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
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 = '登録とキャッシュ';
@@ -1060,14 +1077,11 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
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);
 
1021
  statusElem.textContent = errorMsg;
1022
  }
1023
 
1024
+ // オフラインならボタンを非表示
1025
+ if (!navigator.onLine) {
1026
+ updateStatus('オフラインのため操作できません。');
1027
+ return;
1028
+ }
1029
+
1030
+ registerBtn.style.display = 'inline-block';
1031
+
1032
  if (!('serviceWorker' in navigator)) {
1033
  updateError('このブラウザはService Workerに対応していません。');
1034
  return;
 
1036
 
1037
  try {
1038
  const reg = await navigator.serviceWorker.getRegistration();
1039
+
1040
  if (reg) {
1041
  updateStatus('Service Workerは既に登録されています。更新を確認中...');
1042
+ const updatePromise = reg.update();
1043
+
1044
+ // 即座にupdate処理を開始
1045
  reg.onupdatefound = () => {
1046
  const newSW = reg.installing;
1047
  if (newSW) {
1048
  newSW.onstatechange = () => {
1049
+ if (newSW.state === 'installed') {
1050
+ if (navigator.serviceWorker.controller) {
1051
+ updateStatus('新しいService Workerがインストールされました。更新が必要です!');
1052
+ registerBtn.textContent = '更新を開始';
1053
+ registerBtn.disabled = false;
1054
+ } else {
1055
+ updateStatus('初回インストール完了。');
1056
+ }
1057
  }
1058
  };
1059
  }
1060
  };
1061
+
1062
+ await updatePromise;
1063
  } else {
1064
  updateStatus('Service Workerは未登録です。');
1065
  registerBtn.textContent = '登録とキャッシュ';
 
1077
  for (const reg of regs) {
1078
  await reg.unregister();
1079
  }
 
1080
  updateStatus('新しいService Workerを登録中...');
1081
  await navigator.serviceWorker.register('/sw.js');
 
1082
  updateStatus('登録完了。ページをリロードしてキャッシュを有効化します。');
1083
  registerBtn.textContent = 'ページをリロード';
1084
  registerBtn.disabled = false;
 
1085
  registerBtn.onclick = () => location.reload();
1086
  } catch (err) {
1087
  updateError('Service Workerの登録に失敗しました。', err);