我有一个JS文件,我试图缩小,但它有一些麻烦。这是文件:
$(document).ready(function () {
function DisplayMessage(message, iserror) {
var htmlclass = iserror ? "error" : "success";
$('div.response-message').empty()
.append(message)
.addClass(htmlclass);
$('div.response-message').animate({
top: "-1px"
}, 1000, function () {
alert("donee");
});
}
$('.account-overlay-link > a.link').click(function (e) {
e.preventDefault();
$('.account-overlay.background').removeClass("hide");
});
$('.account-overlay > .area > .close').click(function (e) {
e.preventDefault();
$('.account-overlay.background').addClass("hide");
});
});
正如你所看到的,我在顶部有一个常规的javascript函数,下面有两个jQuery事件处理程序。当我将文件保存为minify时,缩小的文件包含两个jQuery处理程序,但函数无处可见。
奇怪的是,如果我删除了两个jQuery块但保留了该函数,文件仍然会缩小,但它是空白的(除了(document).ready
),好像该函数不存在一样。
我尝试重新创建文件,重新启动Visual Studios,但没有任何工作......
答案 0 :(得分:4)
“ready”处理函数中的任何代码都不会调用您的函数,因此它将作为死代码被删除。无论如何,处理程序之外的任何东西都无法调用它。
如果您希望函数成为全局可见的符号,则必须将其显式分配给window
对象的属性:
$(document).ready(function () {
function DisplayMessage(message, iserror) {
var htmlclass = iserror ? "error" : "success";
$('div.response-message').empty()
.append(message)
.addClass(htmlclass);
$('div.response-message').animate({
top: "-1px"
}, 1000, function () {
alert("donee");
});
}
window.DisplayMessage = DisplayMessage;
如果你这样做,缩小器不会删除它。
答案 1 :(得分:0)
要记住的另一件事是,一些缩小器不能处理“特殊”关键字......
如果您的代码包含“花哨”的内容,请考虑检查您的代码,例如
至少在我的情况下,这是真正的问题