soiz1 commited on
Commit
1a08ab4
·
1 Parent(s): badd93b

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +79 -71
index.html CHANGED
@@ -1005,92 +1005,100 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1005
  <button class="combine-button" id="sw-register-btn">登録を開始</button>
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 (!navigator.onLine) {
1025
- updateStatus('オフラインのため操作できません。');
1026
- return;
1027
- }
 
1028
 
1029
- registerBtn.style.display = 'inline-block';
 
 
 
1030
 
1031
- if (!('serviceWorker' in navigator)) {
1032
- updateError('このブラウザはService Workerに対応していません。');
1033
- return;
1034
- }
1035
 
1036
- try {
1037
- // より確実に登録済みかどうかを判定
1038
- const reg = await navigator.serviceWorker.ready;
1039
 
1040
- if (reg) {
1041
- updateStatus('Service Workerは既に登録されています。更新を確認中...');
1042
- const updatePromise = reg.update();
 
 
1043
 
1044
- reg.onupdatefound = () => {
1045
- const newSW = reg.installing;
1046
- if (newSW) {
1047
- newSW.onstatechange = () => {
1048
- if (newSW.state === 'installed') {
1049
- if (navigator.serviceWorker.controller) {
1050
- updateStatus('新しいService Workerがインストールされました。更新が必要です!');
1051
- registerBtn.textContent = '更新を開始';
1052
- registerBtn.disabled = false;
1053
- } else {
1054
- updateStatus('初回インストール完了。');
 
 
 
1055
  }
1056
- }
1057
- };
1058
- }
1059
- };
1060
 
1061
- await updatePromise;
 
 
 
 
 
 
1062
  }
1063
- } catch {
1064
- updateStatus('Service Workerは未登録です。');
1065
- registerBtn.textContent = '登録とキャッシュ';
1066
- registerBtn.disabled = false;
1067
- }
1068
 
1069
- registerBtn.addEventListener('click', async () => {
1070
- registerBtn.disabled = true;
1071
- try {
1072
- updateStatus('既存のService Workerをアンレジスター中...');
1073
- const regs = await navigator.serviceWorker.getRegistrations();
1074
- for (const reg of regs) {
1075
- await reg.unregister();
1076
- }
 
1077
 
1078
- updateStatus('新しいService Workerを登録中...');
1079
- await navigator.serviceWorker.register('/sw.js');
1080
 
1081
- // ready状態まで待機してからリロードボタン表示
1082
- await navigator.serviceWorker.ready;
1083
- updateStatus('登録完了。ページをリロードしてキャッシュを有効化します。');
1084
- registerBtn.textContent = 'ページをリロード';
1085
- registerBtn.disabled = false;
1086
- registerBtn.onclick = () => location.reload();
1087
- } catch (err) {
1088
- updateError('Service Workerの登録に失敗しました。', err);
1089
- }
1090
- });
1091
- });
1092
- </script>
1093
 
 
 
 
 
 
 
 
 
 
 
1094
 
1095
  </div>
1096
  <div class="container">
 
1005
  <button class="combine-button" id="sw-register-btn">登録を開始</button>
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
+ console.log('registerBtn:', registerBtn);
 
 
 
1014
 
1015
+ function updateStatus(message) {
1016
+ console.log(message);
1017
+ statusElem.textContent = message;
1018
+ }
 
1019
 
1020
+ function updateError(message, error) {
1021
+ const errorMsg = `${message}\nエラー詳細: ${error?.message || error}`;
1022
+ console.error(errorMsg, error);
1023
+ statusElem.textContent = errorMsg;
1024
+ }
1025
 
1026
+ if (!navigator.onLine) {
1027
+ updateStatus('オフラインのため操作できません。');
1028
+ return;
1029
+ }
1030
 
1031
+ if (!('serviceWorker' in navigator)) {
1032
+ updateError('このブラウザはService Workerに対応していません。');
1033
+ return;
1034
+ }
1035
 
1036
+ try {
1037
+ // 登録済みかチェック
1038
+ const reg = await navigator.serviceWorker.ready;
1039
 
1040
+ if (reg) {
1041
+ updateStatus('Service Workerは既に登録されています。更新を確認中...');
1042
+ registerBtn.style.display = 'inline-block';
1043
+ registerBtn.textContent = '更新を開始';
1044
+ registerBtn.disabled = false;
1045
 
1046
+ const updatePromise = reg.update();
1047
+
1048
+ reg.onupdatefound = () => {
1049
+ const newSW = reg.installing;
1050
+ if (newSW) {
1051
+ newSW.onstatechange = () => {
1052
+ if (newSW.state === 'installed') {
1053
+ if (navigator.serviceWorker.controller) {
1054
+ updateStatus('ページの更新があるため、更新ボタンを押してサービスワーカーのキャッシュを再登録してください。');
1055
+ registerBtn.textContent = '更新を開始';
1056
+ registerBtn.disabled = false;
1057
+ } else {
1058
+ updateStatus('初回インストール完了。');
1059
+ }
1060
  }
1061
+ };
1062
+ }
1063
+ };
 
1064
 
1065
+ await updatePromise;
1066
+ }
1067
+ } catch (err) {
1068
+ updateStatus('Service Workerは未登録です。');
1069
+ registerBtn.style.display = 'inline-block';
1070
+ registerBtn.textContent = '登録とキャッシュ';
1071
+ registerBtn.disabled = false;
1072
  }
 
 
 
 
 
1073
 
1074
+ registerBtn.addEventListener('click', async () => {
1075
+ console.log('登録ボタンが押されました');
1076
+ registerBtn.disabled = true;
1077
+ try {
1078
+ updateStatus('既存のService Workerをアンレジスター中...');
1079
+ const regs = await navigator.serviceWorker.getRegistrations();
1080
+ for (const reg of regs) {
1081
+ await reg.unregister();
1082
+ }
1083
 
1084
+ updateStatus('新しいService Workerを登録中...');
1085
+ await navigator.serviceWorker.register('/sw.js');
1086
 
1087
+ await navigator.serviceWorker.ready;
1088
+ updateStatus('登録完了。ページをリロードしてキャッシュを有効化します。');
1089
+ registerBtn.textContent = 'ページをリロード';
1090
+ registerBtn.disabled = false;
 
 
 
 
 
 
 
 
1091
 
1092
+ // クリック時の挙動をページリロードに変更
1093
+ registerBtn.onclick = () => location.reload();
1094
+
1095
+ } catch (err) {
1096
+ updateError('Service Workerの登録に失敗しました。', err);
1097
+ registerBtn.disabled = false;
1098
+ }
1099
+ });
1100
+ });
1101
+ </script>
1102
 
1103
  </div>
1104
  <div class="container">