我有一个 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 block 但保留该函数,该文件仍然会缩小,但它是空白的(除了 (document).ready
),就好像该函数没有存在。
我尝试重新创建该文件,重新启动 Visual Studios,但没有任何效果...
最佳答案
您的函数不会被“就绪”处理函数内的任何代码调用,因此它会作为死代码被消除。无论如何,处理程序外部的任何东西都无法调用它。
如果您希望该函数成为全局可见的符号,则必须将其显式分配给 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;
如果您这样做,缩小器将不会删除它。
关于Javascript minifier 删除函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29374909/