Update index.html
Browse files- 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 | 
            -
             | 
| 1010 | 
            -
             | 
| 1011 | 
            -
             | 
| 1012 |  | 
| 1013 | 
            -
             | 
| 1014 | 
            -
             | 
| 1015 | 
            -
             | 
| 1016 | 
            -
             | 
| 1017 |  | 
| 1018 | 
            -
             | 
| 1019 | 
            -
             | 
| 1020 | 
            -
             | 
| 1021 | 
            -
             | 
| 1022 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
| 1023 |  | 
| 1024 | 
            -
             | 
| 1025 | 
            -
             | 
| 1026 | 
            -
             | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 1027 | 
             
                }
         | 
|  | |
|  | |
|  | |
| 1028 |  | 
|  | |
|  | |
| 1029 | 
             
                try {
         | 
| 1030 | 
            -
                   | 
| 1031 | 
            -
                   | 
| 1032 | 
            -
             | 
| 1033 | 
            -
                    await reg. | 
| 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 | 
            -
             | 
| 1065 | 
            -
             | 
| 1066 |  | 
| 1067 | 
            -
             | 
| 1068 | 
            -
             | 
| 1069 | 
            -
             | 
| 1070 |  | 
| 1071 | 
            -
             | 
| 1072 | 
            -
             | 
| 1073 | 
            -
             | 
| 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>
         | 
