GWT JSNI中的Javascript条件编译

时间:2013-03-10 20:10:28

标签: javascript gwt jsni conditional-compilation

我有这个条件编译语句,用于评估浏览器是否为IE

ie = /*@cc_on!@*/false;
if (ie) {
 //do IE specific stuff..
}

我需要在JSNI中的GWT中使用它。但是,当我这样做时:

public native void JS()  /*-{
 ie = /*@cc_on!@*/false;
}-*/;

我在该行收到错误,例如语法错误,}预期。我试图eval,但错误仍然存​​在。我该如何解决?

1 个答案:

答案 0 :(得分:5)

/*@cc_on!@*/不是正则表达式,而是多行JavaScript注释(/* .. comment .. */)。在Internet Explorer中,这不仅仅是一个评论。解析和评估代码(此功能称为conditional compilation)。

代码中的*/结束了特定于GWT的/*-{部分,导致错误显示。

解决方案是使用不同的方式来记下评论:

var ie = false;
//@cc_on ie = true;

另一种防止JavaScript minifiers的方法是:

var ie = eval('/*@cc_on!@*'+'/false');