在压缩UglifyJS之后无法使用window.external.notify()

时间:2013-06-18 12:04:33

标签: javascript silverlight windows-phone-8 windows-phone

最近我用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()方法?

1 个答案:

答案 0 :(得分:1)

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

禁用序列选项为我们解决了这个问题。来自文档

  

sequences:true,//使用“逗号运算符

连接连续状态

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

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

compress: {
    sequences: false
}