GWT JSNI中的Javascript条件编译

Sex*_*ast 0 javascript gwt conditional-compilation jsni

我有这个条件编译语句,它评估浏览器是否IE:

ie = /*@cc_on!@*/false;
if (ie) {
 //do IE specific stuff..
}
Run Code Online (Sandbox Code Playgroud)

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

public native void JS()  /*-{
 ie = /*@cc_on!@*/false;
}-*/;
Run Code Online (Sandbox Code Playgroud)

我在该行上收到错误,如语法错误,}预期.我试过了,eval但仍然存在错误.我该如何解决?

Rob*_*b W 5

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

*/你的代码结束特定GWT- /*-{部分,导致错误出现.

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

var ie = false;
//@cc_on ie = true;
Run Code Online (Sandbox Code Playgroud)

另一种方法,也可以安全地防止JavaScript minifiers:

var ie = eval('/*@cc_on!@*'+'/false');
Run Code Online (Sandbox Code Playgroud)