新增阅读器功能,待优化

This commit is contained in:
DelLevin-Home
2026-06-20 00:54:40 +08:00
parent 0af9d4368a
commit 670502b4f5
250 changed files with 97847 additions and 826 deletions

View File

@@ -0,0 +1,95 @@
<!DOCTYPE html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<title>Anx Reader</title>
<style>
html {
height: 100vh;
overflow: hidden;
}
body {
user-select: none;
margin: 0 !important;
height: 100vh;
}
#footnote-dialog {
/*
padding: var(safe-area-inset-top) var(safe-area-inset-right) var(safe-area-inset-bottom) var(safe-area-inset-left);
*/
position: fixed;
width: 80vw;
height: 80vh;
max-width: 400px;
max-height: 200px;
min-width: 300px;
min-height: 200px;
border-radius: 15px;
border: 1px solid grey;
user-select: none;
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
outline: none;
z-index: 1000;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
}
#footnote-dialog main {
overflow: auto;
width: 100%;
height: 100%;
}
</style>
<div id="footnote-dialog">
<main></main>
</div>
<script>
// Prevent the default WebView2 right-click context menu on Windows.
document.addEventListener('contextmenu', e => { e.preventDefault(); });
</script>
<script>
(function () {
const ua = navigator.userAgent || '';
const platform = navigator.platform || '';
console.log('AnxUA', ua);
const isAppleDevice = /iPad|iPhone|iPod/.test(ua)
|| (/Mac/.test(platform) && navigator.maxTouchPoints > 1)
|| /Mac OS X/.test(ua);
const chromeMatch = ua.match(/Chrome\/(\d+)/);
const chromeVersion = chromeMatch ? parseInt(chromeMatch[1], 10) : NaN;
const shouldUseModernBundle = isAppleDevice || (!Number.isNaN(chromeVersion) && chromeVersion >= 100);
const loadScript = (src, options = {}) => new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
if (options.type) script.type = options.type;
if (options.async !== undefined) script.async = options.async;
if (options.defer !== undefined) script.defer = options.defer;
script.onload = () => resolve();
script.onerror = (err) => {
console.error('Failed to load script', src, err);
reject(err);
};
document.head.appendChild(script);
});
(async () => {
if (shouldUseModernBundle) {
await loadScript('./src/vendor/pdfjs/pdf.js', { async: false, defer: false });
await loadScript('./src/book.js', { type: 'module' });
return;
}
await loadScript('./dist/bundle.js', { type: 'module' });
await loadScript('./dist/pdf-legacy.js', { async: false, defer: false });
})();
})();
</script>