Advertisement
Guest User

index.html

a guest
Nov 14th, 2018
763
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 2.35 KB | None | 0 0
  1. <html>
  2.  
  3. <head>
  4.   <meta charset="utf-8">
  5.   <script src="https://cdnjs.cloudflare.com/ajax/libs/encoding-japanese/1.0.29/encoding.min.js"></script>
  6.   <style>
  7.     body {
  8.       background-color: #280000;
  9.       color: #FFCC33;
  10.       line-height: 2.0;
  11.       white-space: pre-line;
  12.       margin: 20px;
  13.       overflow: auto;
  14.       margin: 40px auto;
  15.       max-width: 800px;
  16.       padding: 0 10px;
  17.     }
  18.     img {
  19.       display: block;    
  20.       margin: 0 auto;
  21.       max-width: 100%;
  22.     }
  23.     .furigana {
  24.       color: white;
  25.       direction: rtl;
  26.       display: inline-block;
  27.       font-size: .5em;
  28.       margin-top: -1em;
  29.       user-select: none;
  30.       vertical-align: top;
  31.       white-space: nowrap;
  32.       width: 0;
  33.     }
  34.   </style>
  35. </head>
  36.  
  37. <body>
  38.   <input type="file" id="file" />
  39.  
  40.   <h1 id="fileName"></h1>
  41.   <div id="fileContents"></div>
  42.  
  43.   <script type="text/javascript">
  44.     const render = (fileName, fileContents) => {
  45.       fileContents = fileContents
  46.         .replace(/[#\((.*?.jpg)\)入る]/g, "<img src='$1' title='$1'>") // Insert <img src="..." >
  47.         .replace(/[#改ページ]/g, "<hr></hr>") // Draw a white line for page changes
  48.         .replace(/《(.*?)》/g, "<span class='furigana'>$1</span>"); // Wrap furigana
  49.       document.getElementById('fileName').innerHTML = fileName;
  50.       document.getElementById('fileContents').innerHTML = fileContents;
  51.     };
  52.  
  53.     document.getElementById('file').addEventListener('change', (event) => {
  54.       const file = event.target.files[0];
  55.       const reader = new FileReader();
  56.       reader.onload = (e) => {
  57.         let fileContents = new Uint8Array(e.target.result);
  58.         fileContents = Encoding.convert(fileContents,
  59.           {
  60.             to: 'unicode',
  61.             from: Encoding.detect(fileContents),
  62.             type: 'string'
  63.           }
  64.         );
  65.         // Remember the opened file
  66.         localStorage.setItem('fileName', file.name);
  67.         localStorage.setItem('fileContents', fileContents);
  68.         // Render the new file
  69.         render(file.name, fileContents);
  70.       };
  71.       reader.readAsArrayBuffer(file);
  72.     }, false);
  73.  
  74.     if (localStorage.getItem('fileName')) {
  75.       // If opened a file before, render it
  76.       render(localStorage.getItem('fileName'), localStorage.getItem('fileContents'));
  77.     }
  78.   </script>
  79. </body>
  80.  
  81. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement