我已經從https://github.com/yui/yuglify下載了雅虎JavaScript Uglify(yuglify),我打算將它用於在apache服務器上託管的一些PHP項目上的JS和CSS壓縮。試圖來縮小與這些原始內容的文件:yuglify JavaScript壓縮器刪除條件編譯
var _cmFrameList = new Array(); // a pool of reusable iframes
var _cmFrameListSize = 0; // keep track of the actual size
var _cmFrameIDCount = 0; // keep track of the frame id
var _cmFrameMasking = true; // use the frame masking
// disable iframe masking for IE7
/*@cc_on
@if (@_jscript_version >= 5.6)
if (_cmFrameMasking)
{
var v = navigator.appVersion;
var i = v.indexOf ("MSIE ");
if (i >= 0)
{
if (parseInt (navigator.appVersion.substring (i + 5)) >= 7)
_cmFrameMasking = false;
}
}
@end
@*/
var _cmClicked = false; // for onClick
但得到這個:
var _cmFrameList=new Array,_cmFrameListSize=0,_cmFrameIDCount=0,_cmFrameMasking=!0,_cmClicked=!1
在原始文件的內容,還有那對在舊的IE瀏覽器上運行需要一些條件編譯代碼(以@cc_on,@if,@end等開頭的註釋行)。看起來,yuglify正在將這些條件編譯線視爲簡單的註釋,因此正在將其全部刪除。
好奇心,我也在這個文件上測試了yuicompressor(https://github.com/yui/yuicompressor/downloads),似乎所有的條件編譯代碼都是完整的。即使是換行符仍然存在:
var _cmFrameList=new Array();var _cmFrameListSize=0;var _cmFrameIDCount=0;var _cmFrameMasking=true;
/*@cc_on
@if (@_jscript_version >= 5.6)
if (_cmFrameMasking)
{
var v = navigator.appVersion;
var i = v.indexOf ("MSIE ");
if (i >= 0)
{
if (parseInt (navigator.appVersion.substring (i + 5)) >= 7)
_cmFrameMasking = false;
}
}
@end
@*/
var _cmClicked=false;
舊IE瀏覽器被沒有這些條件編譯行亂碼。是否可以使用yuglify而不刪除它?