I have the following JS (not jQuery), which I want to compress (saved in a PHP file with header('Content-type: text/javascript')
):
var $url = window.location.href;
$url = $url.toLowerCase().replace(/^(http(s)?\:\/\/)/g, ''),
$url = $url.split('/');
var $current_page = $url[$url.length - 1].replace(/(\?.*)?(\#.*)?/g, ''); // Current Page
document.addEventListener('DOMContentLoaded', function() {
if ($current_page === 'index.html') {
if (window.location.hash) {
var $current_hash = window.location.hash.substring(1);
} else {
window.location.hash = '';
}
// Ignore the code above, the important part is right below:
var $fp_imgs = document.querySelectorAll('img.-homepage-poster');
$fp_imgs.forEach(function($fp_img) {
var $imgs = [518966, 518967, 518968, 518969],
$rand = Math.floor($imgs.length * Math.random()),
$xmhr = new XMLHttpRequest();
var response = function($e) {
var $this = this,
$url_creator = window.URL || window.webkitURL,
$image_url = $url_creator.createObjectURL($this.response);
$fp_img.src = $image_url;
}
$xmhr.open('get', '../imgs/' + $imgs[$rand] + '.jpg', true);
$xmhr.responseType = 'blob';
$xmhr.onload = response;
$xmhr.send();
});
}
});
I use ob_start
with the following regex pattern in order to compress the code at the beginning of the file:
ob_start(function($code) {
// return $code; # If the compression causing errors, do not compress
return preg_replace('(\s{2,})', ' ', preg_replace('/(?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(?<!\:|\\\|\')\/\/.*))/', '', $code));
});
When it's not compressed, Everything works well. But when I use the pattern, I get the following error in the console:
SyntaxError: unexpected token: identifier
The "minified" output:
var $url = window.location.href; $url = $url.toLowerCase().replace(/^(http(s)?\:\/\/)/g, ''), $url = $url.split('/'); var $current_page = $url[$url.length - 1].replace(/(\?.*)?(\#.*)?/g, ''); document.addEventListener('DOMContentLoaded', function() { if ($current_page === 'index.html') { if (window.location.hash) { var $current_hash = window.location.hash.substring(1); } else { window.location.hash = ''; } var $fp_imgs = document.querySelectorAll('img.-homepage-poster'); $fp_imgs.forEach(function($fp_img) { var $imgs = [518966, 518967, 518968, 518969], $rand = Math.floor($imgs.length * Math.random()), $xmhr = new XMLHttpRequest(); var response = function($e) { var $this = this, $url_creator = window.URL || window.webkitURL, $image_url = $url_creator.createObjectURL($this.response); $fp_img.src = $image_url; } $xmhr.open('get', '../imgs/' + $imgs[$rand] + '.jpg', true); $xmhr.responseType = 'blob'; $xmhr.onload = response; $xmhr.send(); }); } });
How can I solve this?
Thank you very much