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

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +68 -96
index.html CHANGED
@@ -1002,104 +1002,80 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1002
  <b>これはテスト的な機能で、ページの更新などができなくなるバグが発生する可能性があります。<br>(更新機能は実装していますが安定して動作するとは限りません。)<br>
1003
  ページが更新されない場合、動画の更新ができなかったり既存のバグが残り続けたりする可能性があります。</b></a>
1004
  <br>
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.onclick = 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">
1105
  <div class="audio-controls">
@@ -1834,8 +1810,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1834
  combinedAudioElement.playbackRate = speed;
1835
  }
1836
 
1837
- speedValue.textContent = speed.toFixed(3) + 'x';
1838
- playbackSpeedValue.textContent = speed.toFixed(3) + 'x';
1839
  speedSlider.value = speed;
1840
  }
1841
 
@@ -2138,14 +2114,10 @@ video.addEventListener('timeupdate', function() {
2138
  if (!isAudioCombined) return;
2139
 
2140
  const speed = parseFloat(this.value);
2141
- speedValue.textContent = speed.toFixed(3) + 'x';
2142
  playbackSpeedSlider.value = speed;
2143
- playbackSpeedValue.textContent = speed.toFixed(3) + 'x';
2144
  updatePlaybackRate(speed);
2145
- const baseTempo = isTMode ? 66 : 92;
2146
- const newTempo = baseTempo * speed;
2147
- tempoInput.value = newTempo.toFixed(1);
2148
- tempoSpeedValue.textContent = speed.toFixed(3) + 'x';
2149
  });
2150
 
2151
  // 再生速度スライダー (設定メニュー)
@@ -2153,9 +2125,9 @@ video.addEventListener('timeupdate', function() {
2153
  if (!isAudioCombined) return;
2154
 
2155
  const speed = parseFloat(this.value);
2156
- playbackSpeedValue.textContent = speed.toFixed(3) + 'x';
2157
  speedSlider.value = speed;
2158
- speedValue.textContent = speed.toFixed(3) + 'x';
2159
  updatePlaybackRate(speed);
2160
  });
2161
 
@@ -2168,10 +2140,10 @@ video.addEventListener('timeupdate', function() {
2168
  const clampedSpeed = Math.max(0.001, Math.min(5.0, speed));
2169
 
2170
  playbackSpeedSlider.value = clampedSpeed;
2171
- playbackSpeedValue.textContent = clampedSpeed.toFixed(3) + 'x';
2172
  speedSlider.value = clampedSpeed;
2173
- speedValue.textContent = clampedSpeed.toFixed(3) + 'x';
2174
- tempoSpeedValue.textContent = clampedSpeed.toFixed(3) + 'x';
2175
 
2176
  updatePlaybackRate(clampedSpeed);
2177
  });
 
1002
  <b>これはテスト的な機能で、ページの更新などができなくなるバグが発生する可能性があります。<br>(更新機能は実装していますが安定して動作するとは限りません。)<br>
1003
  ページが更新されない場合、動画の更新ができなかったり既存のバグが残り続けたりする可能性があります。</b></a>
1004
  <br>
1005
+ <button class="combine-button" id="sw-register-btn" disabled>登録を開始</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 (!('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>
1080
  <div class="container">
1081
  <div class="audio-controls">
 
1810
  combinedAudioElement.playbackRate = speed;
1811
  }
1812
 
1813
+ speedValue.textContent = speed.toFixed(2) + 'x';
1814
+ playbackSpeedValue.textContent = speed.toFixed(2) + 'x';
1815
  speedSlider.value = speed;
1816
  }
1817
 
 
2114
  if (!isAudioCombined) return;
2115
 
2116
  const speed = parseFloat(this.value);
2117
+ speedValue.textContent = speed.toFixed(2) + 'x';
2118
  playbackSpeedSlider.value = speed;
2119
+ playbackSpeedValue.textContent = speed.toFixed(2) + 'x';
2120
  updatePlaybackRate(speed);
 
 
 
 
2121
  });
2122
 
2123
  // 再生速度スライダー (設定メニュー)
 
2125
  if (!isAudioCombined) return;
2126
 
2127
  const speed = parseFloat(this.value);
2128
+ playbackSpeedValue.textContent = speed.toFixed(2) + 'x';
2129
  speedSlider.value = speed;
2130
+ speedValue.textContent = speed.toFixed(2) + 'x';
2131
  updatePlaybackRate(speed);
2132
  });
2133
 
 
2140
  const clampedSpeed = Math.max(0.001, Math.min(5.0, speed));
2141
 
2142
  playbackSpeedSlider.value = clampedSpeed;
2143
+ playbackSpeedValue.textContent = clampedSpeed.toFixed(2) + 'x';
2144
  speedSlider.value = clampedSpeed;
2145
+ speedValue.textContent = clampedSpeed.toFixed(2) + 'x';
2146
+ tempoSpeedValue.textContent = clampedSpeed.toFixed(2) + 'x';
2147
 
2148
  updatePlaybackRate(clampedSpeed);
2149
  });