打包/缩小的 javascript 在 IE6 中失败 - 如何调试?

发布于 2024-07-10 21:53:37 字数 386 浏览 8 评论 0 原文

我有许多文件,我将它们组合并打包以生成一个缩小的 JS 文件。 问题是,当我缩小文件时(使用 packer),IE6 提供了其特征之一的帮助错误消息。

Line: 12      // of course, line 12 is an empty line
Char: 1
Error: Expected ')'
Code: 0

问题是:它在 IE7、Firefox 和 Chrome 中工作正常,但问题只出现在 IE6 上。

解压后,我有近 200kb 的脚本分布在 8 个文件中。 我到底该如何解决这个问题?

I have a number of files which I combine and pack to produce a single, minified JS file. The problem is that when I minify the file (using packer), IE6 gives one of its characteristic helpful error messages.

Line: 12      // of course, line 12 is an empty line
Char: 1
Error: Expected ')'
Code: 0

The thing is: it works fine in IE7, Firefox and Chrome the problem only comes up for IE6.

Unpacked, I have almost 200kb of scripts spread through 8 files. How on earth do I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

梦屿孤独相伴 2024-07-17 21:53:37

就像 CMS 所说的, YUI 压缩器 是一个很好的工具来压缩和混淆你的代码,尝试一下那。

我在我的 javascript 文件上使用以下代码。 我在 OSX 上运行,但命令在 Linux 上应该相同,也可能在 Windows 上(尽管我从未尝试过)。

java -jar /path/to/yuicompressor-2.4.jar --charset utf8 -o ~/path/to/scriptname.min.js ~/path/to/scriptname.js 

其中 ~/path/to/ 是 javascript 文件所在位置的路径,scriptname.min.js 是最小化/混淆的最终结果的名称, >scriptname.js 是原始文件。

我假设您不能“忘记”IE6? 我的新年愿望之一是互联网上最后 23% 的 IE6 用户终于升级到更体面/最新的浏览器:-)。

希望这可以帮助!

-戴夫

Like CMS said, the YUI compressor is a great tool to compress and obfuscate your code, try that.

I use the following code on my javascript files. I'm running on OSX, but the command should be identical on Linux and possibly also on Windows (though I never tried).

java -jar /path/to/yuicompressor-2.4.jar --charset utf8 -o ~/path/to/scriptname.min.js ~/path/to/scriptname.js 

Where ~/path/to/ is the path to wherever your javascript file is, scriptname.min.js is the name of the minimized/obfuscated end result, and scriptname.js is the original file.

I'm assuming you cannot just 'forget' about IE6? One of my new year wishes is that the last 23% of IE6 users on the internet finally upgrade to a more decent/up-to-date browser :-).

Hope this helps!

-Dave

离不开的别离 2024-07-17 21:53:37

这是 ie6 中很常见的问题,
你必须注意代码中的闭包,

条件语句也必须带有 { - } ... 和 function 。

if(){
}

function(){
};

你必须把 ; 在每个语句的末尾,如果没有,这些行将合并成浏览器无法理解的内容。

我使用 jslint.com 进行 JavaScript 调试。
在错误列表中查找“缺少分号”。

this is a very common problem with ie6,
you have to pay attention to the closures in your code,

the condition statements must be with { - } ... and function too.

if(){
}

function(){
};

you must put ; on the end of each statement , if not , the lines will merge into something that the browser cannot understand.

i use jslint.com for javascript debugging.
look for the "missing semicolon" in the error list.

薔薇婲 2024-07-17 21:53:37

您是否已验证未压缩的代码可以在 IE6 中成功运行? 如果是这样,因为这是语法错误而不是运行时错误,所以我采取的下一步是开始将 javascript 减半,缩小它,并查看问题何时停止报告。 然后从那里继续二进制搜索。

Have you already verified that the un-minified code can run successfully in IE6? If so, because this is a syntax error and not a runtime error, the next step I'd take is start halving the javascript, minifying it, and seeing when the problem stops being reported. Then continue binary searching from there.

清欢 2024-07-17 21:53:37

从记忆中,我认为我最终解决这个问题的方法,以及我现在通常使用精简代码解决问题的方法,是通过 JSLint。 其非凡的严格性将发现不会在非缩小代码上引起问题的问题(例如缺少分号)。 您将不得不费力地浏览大量并非真正的错误消息,但问题将在某个地方!

From memory, I think the way I solved this problem in the end, and the way I generally tackle problems with minified code now, is to run it through JSLint. Its extraordinary strictness will pick up problems (eg missing semicolons) that don't cause problems on non-minified code. You'll have to trudge through a lot of not-really-an-error messages, but the problem will be in there somewhere!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文