Thread LZ4 Kompression zwischen JS und Perl (Kompatibilitätsproblem?) (21 answers)
Opened by styx-cc at 2020-04-19 01:22

styx-cc
 2020-05-03 03:51
#191781 #191781
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Ich noch mal.
Also, ich habe die jsxcompressor.min.js jetzt so umgeschrieben, dass sie mit webworkern benutzbar ist (leider konnte ich nur die minified version finden):
Code: (dl )
warn:function(e){"object"==typeof window&&window.console&&console.warn?console.warn("WARNING:",e):"object"==typeof document&&document.getElementById("warning")&&(document.getElementById("debug").innerHTML+="WARNING: "+e+"<br />")}

wird zu:
Code: (dl )
warn:function(e){}


Code: (dl )
debugInt:function(e){var r,n;for(r=0;r<arguments.length;r++)n=arguments[r],"object"==typeof window&&window.console&&console.log?console.log(n):"object"==typeof document&&document.getElementById("debug")&&(document.getElementById("debug").innerHTML+=n+"<br/>")}

wird gelöscht, keine Ahnung warum dort überaupt aufs DOM zugegriffen wird.

Code: (dl )
window.JXG=r("../build/compressor.deps.js")})();

ganz am Ende wird zu
Code: (dl )
this.JXG=r("../build/compressor.deps.js")})();
damit bezieht sich JXG nicht mehr auf das im Webworker nicht vorahandene DOM sondern auf "WorkerGlobalScope".

Und das Script dazu:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
let response = `
self.onmessage = function(e) {
importScripts('.../js/jsxcompressor.min.js');
let delta_t = new Date().getTime();
e.data.text = JXG.decompress(e.data.text);
e.data.decompression_time = new Date().getTime() - delta_t;
postMessage(e.data);
}`;

let blob = new_blob(response);
window.URL = window.URL || window.webkitURL;
let worker = new Worker(URL.createObjectURL(blob));

worker.onmessage = function(e) {
wsa.parse_input(e.data);
};

worker.postMessage(res);

function new_blob(code) {
let blob;

try {
blob = new Blob([code], {type: 'application/javascript'});
} catch (e) { // Backwards-compatibility
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
blob = new BlobBuilder();
blob.append(code);
blob = blob.getBlob();
}

return blob;
}


Siehe auch stackoverflow

Lieben Gruß.
Pörl.

View full thread LZ4 Kompression zwischen JS und Perl (Kompatibilitätsproblem?)