generated from dellevin/template
新增阅读器功能,待优化
This commit is contained in:
95
assets/foliate-js/index.html
Normal file
95
assets/foliate-js/index.html
Normal 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>
|
||||
Reference in New Issue
Block a user