Using the uglify.js browser-version, as mentioned here, on the first comment of the OP & getting this error in Chrome console: "UglifyJS.minify is not a function at FileReader."
The code used:
<!DOCTYPE html>
<html>
<head>
<script src="https://lisperator.net/s/js/uglifyjs/uglify.js"></script>
<style>
#drop_zone{
width: 300px;
height: 300px;
border: 2px dashed #bbb;
text-align: center;
padding: 5px;
}
</style>
</head>
<body>
<div id="drop_zone">
<span>Drag and drop HTML files to minify</span>
</div>
<script>
console.log(UglifyJS);
var filesAr = [],
dz = document.getElementById('drop_zone');
function handleFileSelect(evt) {
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.onload = (function(file) {
return function(e) {
var minfd = UglifyJS.minify(e.target.result).code;
filesAr.push({name: file.name, min: minfd});
};
})(f);
reader.readAsText(f);
}
console.log(filesAr);
}
function handleDragOver(evt) {
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy';
}
dz.addEventListener('dragover', handleDragOver, false);
dz.addEventListener('drop', handleFileSelect, false);
</script>
</body>
</html>
Whatever is wrong with this code?
minify does not appear to be a function. See the instructions for the code you are using here: https://lisperator.net/uglifyjs/mangle.
Replace
UglifyJS.minify(e.target.result).code;with the below and you should get the result you want.