不能在UglifyJS压缩后使用window.external.notify()

Can't use window.external.notify() after UglifyJS compressed

本文关键字:external window notify UglifyJS 压缩 不能      更新时间:2023-09-26

最近我使用了UglifyJS来压缩我的js代码进行测试。然后我发现压缩后,我不能使用window.external.notify()通知外部的WebBrowser控件。我的演示代码在这里:

function MyNotify () {
    try{
        alert("Notify");
        window.external.notify("Notify");
    } catch (e){
        alert(e.message);
    }
}
function MyNotifyCompressed(){
    try {
        alert("Notify"), window.external.notify("Notify");
    } catch (e) {
        alert(e.message);
    }
}

然后调用WebBrowser.InvokeScript("MyNotifyCompressed"),它会这样提醒我:

对象不支持此操作

为什么压缩后不能调用window.external.notify()方法?

我们遇到了同样的问题。似乎是Windows Phone上IE的解析错误。问题是,UglifyJS默认情况下用逗号替换分号,这会导致奇怪的错误。

禁用序列选项解决了我们的问题。从docs

序列:true,//用"逗号"操作符连接连续的语句

将该选项设置为false将使IE高兴。

如果您使用Grunt,请将此添加到uglify选项中:

compress: {
    sequences: false
}