1

我有一个 Yeoman 项目,它在其 Javascript 文件上使用grunt-contrib-uglify 。在 Selectvizr 库上运行时(使用 Bower 引入),生成的文件如下所示:

!function(win){return}(this);

我认为这是因为如果浏览器不是 IE,Selectivizr 设置为不执行任何操作,所以也许在 Grunt 执行上下文中它正在这样做?

所以我想知道是否有可能让 Uglify 在 Selectivizr 上运行并产生可用的东西?

4

3 回答 3

2

Uglify 处理 JavaScript 的唯一目的是优化。它的工作是以任何可能的方式使文件超级小。为此,它会检测代码中的任何非可变条件,例如if (true) { return; }. 由于true始终为真,因此对该条件的功能进行了解释和优化。

所以,这不是一个 Uglify 错误,因为它正确地完成了它的工作。我不熟悉 Selectivizr 使用的技巧,但如果它有效,它就有效。

不幸的是,我能想到的唯一解决方案是不让 Uglify 在文件上运行,而是dist/直接将其复制到。

于 2013-07-20T03:44:44.207 回答
1

另一种解决方案是注释/删除 selectivizr.js 中的第 32 行

if (/*@cc_on!@*/true) return;

这是破坏 uglify/concat 任务的行。再次运行,它将起作用。

更多关于Github

于 2014-10-28T17:28:55.337 回答
1
var result = navigator.userAgent.match(/MSIE (\d+)/);
if (result) {
  var ieVersion = result[1];
}
else {
  return;
}

请使用上面的代码来解决这个问题。我也遇到了同样的问题,更新此行后已修复。

于 2014-10-31T05:45:51.090 回答