打包/缩小的 javascript 在 IE6 中失败 - 如何调试?
我有许多文件,我将它们组合并打包以生成一个缩小的 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 个文件中。 我到底该如何解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Microsoft 有自己的方法:
http://blogs. msdn.com/ie/archive/2004/10/26/247912.aspx
http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html
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
就像 CMS 所说的, YUI 压缩器 是一个很好的工具来压缩和混淆你的代码,尝试一下那。
我在我的 javascript 文件上使用以下代码。 我在 OSX 上运行,但命令在 Linux 上应该相同,也可能在 Windows 上(尽管我从未尝试过)。
其中 ~/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).
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
这是 ie6 中很常见的问题,
你必须注意代码中的闭包,
条件语句也必须带有 { - } ... 和 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.
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.
您是否已验证未压缩的代码可以在 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.
从记忆中,我认为我最终解决这个问题的方法,以及我现在通常使用精简代码解决问题的方法,是通过 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!