0

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?

4

5 回答 5

1

Microsoft have their way of doing it:

http://blogs.msdn.com/ie/archive/2004/10/26/247912.aspx

http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html

于 2009-01-07T03:33:06.173 回答
1

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

于 2010-01-21T17:17:09.523 回答
1

就像 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 用户最终升级到更体面/最新的浏览器:-)。

希望这可以帮助!

-戴夫

于 2009-01-07T05:01:35.323 回答
1

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

条件语句必须带有 { - } ... 和函数。

if(){
}

function(){
};

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

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

于 2009-01-07T05:13:01.713 回答
0

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

于 2010-01-22T02:09:45.847 回答