diff --git a/index.html b/index.html
index 1f71fc2..dd9a8a0 100644
--- a/index.html
+++ b/index.html
@@ -63,7 +63,6 @@
某科学的 PGP 算号指南
密钥使用 OpenPGP.js 在浏览器中生成,不会发送到其他地方。如果仍然担心这一点,可以检查源代码、查看浏览器开发者工具的“网络”部分、或在页面加载完成后断网使用。
- 注意:浏览器可能会限制在后台标签页中运行的内容,因此算号时请避免切换到其它标签页或将浏览器窗口最小化,否则会严重影响算号速度。作为替代,你可以将这个标签页拖出成为一个单独的窗口,使用各类工具将窗口置顶,然后拖到屏幕边缘。
diff --git a/src/main.ts b/src/main.ts
index 1d19b93..54de305 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -6,6 +6,7 @@ import {
} from 'openpgp/lightweight';
import { createVanityKey } from './vanity-key.ts';
import tadaData from './tada.ogg?inline';
+import silenceData from './near-silence.ogg?inline';
import {
EllipticCurveName,
GenerateKeyOptions,
@@ -17,6 +18,13 @@ import 'terminal.css';
const tada = new Audio(tadaData);
+// 通过播放音频阻止浏览器降低setTimeout的频率
+// 完全静音的音频是没有效果的……
+// ffmpeg -f lavfi -i "sine=frequency=1:duration=1" -c:a libopus -ar 8k -b:a 1k -movflags +faststart -fflags +bitexact -map_metadata -1 -dn near-silence.ogg
+const silence = new Audio(silenceData);
+silence.volume = .01;
+silence.loop = true;
+
const app: {
keyType: EllipticCurveName | '2048' | '3072' | '4096',
userIDInput: UserID,
@@ -131,6 +139,7 @@ const app: {
this.hashCount = 0;
this.runningTime = 0;
this.running = true;
+ silence.play();
try {
const options: GenerateKeyOptions = {
userIDs: this.userID,
@@ -189,6 +198,7 @@ const app: {
alert(err);
} finally {
this.running = false;
+ silence.pause();
}
},
diff --git a/src/near-silence.ogg b/src/near-silence.ogg
new file mode 100644
index 0000000..82a5874
Binary files /dev/null and b/src/near-silence.ogg differ