如何缩小包含以'.'分隔的函数名的JavaScript文件?

Ged*_*don -2 javascript minify

我正在Windows操作系统上运行100个Javascript文件,并遇到了几乎一半的问题.事实证明,minfiying压缩器无法正确缩小具有点所示功能的js文件.对于YUI压缩器,它会在发生这种情况时删除文件的内容,而对于Ajaxminifier,它只是忽略点并在它之前取出函数名.

有问题的功能示例:

function window.onload() {}

Error Message: :missing ( before function parameters
Run Code Online (Sandbox Code Playgroud)

使用YUI压缩器作为MSBuild任务和命令行都会产生相同的结果.

命令行示例:

java -jar yuicompressor.jar --type js --charset utf-8 -o D:\foo.js D:\foo-min.js
Run Code Online (Sandbox Code Playgroud)

使用Ajax Minifier示例:

命令行:

AjaxMin.exe -o D:\foo.js D:\foo-min.js
Run Code Online (Sandbox Code Playgroud)

但是,一种解决方案是重写功能,缩小过程很有效例如:

window.onload = function() {}
Run Code Online (Sandbox Code Playgroud)

但是现在这不是我们的选择.有谁知道这个问题并能够提供解决方案吗?


谢谢.是的,我确实继承了这些文件,我还没有确定它是用这种方式编写的.我不相信有任何处理器将其转换为正确的JS ..我知道Web应用程序只能在IE上运行,这可能就是为什么这样做的原因.在firefox等,可能不是这样.我希望改变它

Jas*_*son 7

它正在破碎,因为你正试图缩小无效的JavaScript.功能中不能包含点.

我想你正试图命名空间.如果你是,你最好做一些像:

var myVar = {
    foo: function () { /* do something */ }
}

myVar.foo();
Run Code Online (Sandbox Code Playgroud)