Javascript minifier 删除函数

标签 javascript web-essentials

我有一个 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/

相关文章:

javascript - Bootstrap 4.4 按钮点击 : Changing/Hiding Spinner after Loading

javascript - Angular2 - NgModule 的提供程序无效,仅允许提供程序和类型的实例

javascript - 使用 Javascript 在 Span 标签内动态插入链接

css - 缩小 .css 文件时创建 *.css.map 文件

visual-studio-2013 - Visual Studio 2013 与 Web Essentials 不断崩溃

javascript - React js中ajax调用后该列消失

javascript - Url Post 请求 jquery Django

typescript - jquery.unobtrusive-ajax.d.ts/jquery.validate.unobtrusive.d.ts 有人吗?

c# - 控制 web Essential 如何从 .cs 文件生成 d.ts 文件

visual-studio - Web Essentials 包括来自另一个 CSS 文件的新 LESS 样式中的现有样式