###前提・実現したいこと
HTMLファイルとjavascriptファイルを使用して、ブラウザで表示できるHTMLレポートを生成するアプリを作成しています。
この生成したファイルサイズが大きくなりすぎる(主にjavascriptファイル)ため、ファイルサイズを小さくする目的でjavascriptファイルをzip化し、それをロードしたいと考えているのですが、zipファイルをロードする方法として、ファイル選択してもらうという方法(下記[試したこと]にコード記載しています)しかわかりませんでした。
可能であれば、ファイル選択を行う事無く、zip化していないjavascriptファイルと同じ様に自動でロードしたいのですが、そのようなことは可能でしょうか?
###該当のソースコード
html
1<html> 2 <script src="./test.js"></script> 3</html>
js
1// test.jsファイル例。このファイルサイズが大きくなりすぎるため、zip化してロードできればと考えています 2console.log('load test');
###試したこと
zip化したjavascriptファイルをロードするという目的で、下記の例が一番近いのですが、この例では「HTMLをブラウザで開く」→「zipファイルを選択する」という必要があるため、可能であれば「zipファイルを選択する」という手間をなくしたいです。
html
1<html> 2 <body> 3 <input type="file" id="file" name="file" multiple /><br /> 4 </body> 5 6 <script 7 src="https://code.jquery.com/jquery-3.2.1.min.js" 8 integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 9 crossorigin="anonymous"></script> 10 <script type="text/javascript" src="./jszip.min.js"></script> 11 12 <script type="text/javascript"> 13 $("#file").on("change", function(evt) { 14 console.log('change file'); 15 function handleFile(f) { 16 console.log('handleFile call'); 17 var jszip = new JSZip(); 18 jszip.loadAsync(f) 19 .then(function(zip) { 20 console.log(zip); 21 zip.forEach(function (relPath, zipEntry) { 22 jszip.file(zipEntry.name).async("string") 23 .then(function(content) { 24 console.log("eval run") 25 eval(content); 26 }); 27 }) 28 }); 29 } 30 var files = evt.target.files; 31 for (var i = 0; i < files.length; i++) { 32 handleFile(files[i]); 33 } 34 }); 35 </script> 36</html>
###補足情報(言語/FW/ツール等のバージョンなど)
- サーバーを立てることはできません。
- 目的はファイルサイズの縮小のため、zipである必要はありません。

回答4件
あなたの回答
tips
プレビュー