実現したいこと
実行環境:Chrome: 76.0.3809.100、Tampermonkey 4.8.41
Tampermonkeyでのユーザースクリプトを作成中です。
JSzipでファイルを圧縮、ダウンロードする処理を作成しています。
ファイルのzip化、保存は可能になったのですがファイル圧縮中に別のタブへ切り替えると処理が一時停止します。
タブをフォーカスし直すと処理が続行され通常処理になります。
これをタブを切り替えても処理を背面で続行するようにしたいです。
発生している問題
別タブへ切り替えると処理が一時停止する。
該当のソースコード
デモ用のTampermonkeyのソースコードとなります。
下記サイトで実行されます。
https://stuk.github.io/jszip/
左上のDLボタンをクリックすると10MB程度のテキストファイルを作成しzip化しファイルをダウンロードします。
左上のボタンに圧縮中の進捗が表示されます。
javascript
1// ==UserScript== 2// @name js_zip_demo 3// @namespace js_zip_demo 4// @description js_zip_demo 5// @include https://stuk.github.io/jszip/ 6// @version 1 7// @grant none 8// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js 9// @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.2.0/jszip.js 10// @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.js 11// ==/UserScript== 12 13 14function savezip() { 15 var zip = new JSZip(); 16 17/////////適当なデータ生成 start 18 var c = "abcdefghijklmnopqrstuvwxyz0123456789"; 19 var r = ""; 20 for(var i=0; i<10**5; i++){ 21 r += c[Math.floor(Math.random()*c.length)]; 22 } 23 for(var j=0; j<100; j++){ 24 zip.file(j+".txt",r); 25 } 26/////////適当なデータ生成 end 27 28 zip.generateAsync({type:"blob"}, function updateCallback(metadata){ //ファイルzip化 29 document.getElementById("js_zip_button").textContent="圧縮中:"+ Math.round(metadata.percent.toFixed(2)) + "%";//進捗表示 30 console.log(Math.round(metadata.percent.toFixed(2))); 31 }) 32 .then(function(content) { 33 saveAs(content, "example.zip");//ファイル保存 34 document.getElementById("js_zip_button").textContent="完了"; 35 }); 36 37} 38 39jQuery('body').prepend('<button id="js_zip_button"" >DL</button>'); //ページ左上にボタン作成 40jQuery("#js_zip_button").click(function(){savezip();});
試したこと
firefoxのGreasemonkeyでも動作テストを行いましたが同じ症状が発生します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/21 08:59 編集