ActiveX仅在IE 9控制台激活时工作

时间:2015-01-14 14:43:05

标签: javascript internet-explorer activex

我正在构建一个小型Web应用程序,需要通过ActiveX和Javascript(以及IE9 ...)访问Powerpoint以自动构建报告。我正在使用ActiveX,因为我无法在服务器端生成Powerpoint文件(虽然我会非常喜欢它)。

我现在的代码非常无聊,因为我刚刚开始:

// Creating the ActiveX Powerpoint control
var ppt;
try{
    ppt = new ActiveXObject("Powerpoint.Application");
}catch(e){
    if (e instanceof ReferenceError)
        alert("Your browser might not be compatible with this function. Please use Internet Explorer.");
    else
        alert("An error happened: " + e);
}
console.log("ActiveX Object created");

// Openning Powerpoint, make it visible
ppt.Visible = 1;

// Creating a new Presentation, and adding a blank (1 slide, 1 = ppLayoutBlank) Slide
ppt.Presentations.Add();
ppt.ActivePresentation.Slides.Add(1, 1);

在我的计算机上,即使我允许它通过"An ActiveX control on this page might be dangerous; Do you allow it to execute?"执行(直接从法语导出),ActiveX控件也不会启动Powerpoint。

但是,如果我启动了Developper Console,它会神奇地运行。而且,在另一台使用IE 11的计算机上,在我允许ActiveX控件执行后,它工作正常。

我认为我的IE安全设置是正确的,因此我想不出任何其他IE浏览器我不知道的故障。我正在使用64位的IE 9.0.8112.16421。

我怎样才能让这段代码运行良好?提前谢谢!

1 个答案:

答案 0 :(得分:3)

提醒:IE中的console.log仅在开发者控制台打开时才有效。 如果开发者控制台已关闭,则会停止脚本,因为consoleundefined

在您的代码中,尝试更改:

console.log("ActiveX Object created");

try{console.log("ActiveX Object created")}catch(err){}或使用以下内容对该行进行评论://