2015-01-14 3 views
2

Я создаю небольшое веб-приложение, которому необходимо получить доступ к Powerpoint через ActiveX и Javascript (и IE9 ...), чтобы автоматически создавать отчет. Я использую ActiveX, потому что я не могу создать файл Powerpoint на стороне сервера (хотя я бы предпочел это очень).ActiveX работает только при активации IE 9

Мой код прямо сейчас очень голые кости, как я только начинал:

// 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); 

На моем компьютере, это происходит, что элемент управления ActiveX не запускается Powerpoint, даже если я позволю ему выполнить через "An ActiveX control on this page might be dangerous; Do you allow it to execute?" (получена непосредственно с французского языка).

Но, если я запустил Консоль разработчика, она волшебным образом запускается. И, на другом компьютере с IE 11, он отлично работает после того, как я позволил элементу управления ActiveX выполнить.

Я думаю, что мои настройки безопасности IE правильные, поэтому я не могу думать ни о чем другом, что ошибка IE, о которой я не знаю. Я работаю с IE 9.0.8112.16421 64-бит.

Как я могу получить этот код, чтобы работать хорошо? Спасибо заранее!

+3

'console.log' в IE работает только в том случае, если консоль разработчика открыта ... если консоль разработчика закрыта, она останавливает скрипт, потому что консоль' undefined'. Попробуйте изменить 'console.log (« созданный объект ActiveX »);' in 'try {console.log (« Создан объект ActiveX »)} catch (err) {}'. – Frogmouth

+2

Или просто измените его на 'alert (« Созданный объект ActiveX »);' – ToastyMallows

+0

Wow ... Хорошо сыграл IE, хорошо сыграл! Я на самом деле кратко из этого, но никогда бы не подумал, что это проблема! Он отлично работает с 'try catch', я буду придерживаться этого! @Frogmouth Если бы вы могли разместить это как ответ, так что я могу принять его ... Спасибо вам за молниеносный ответ! –

ответ

3

Напоминание: console.log в IE работает, только если консоль разработчика открыта. Если Консоль разработчика закрывается, он останавливает сценарий, потому что console - undefined.

В своем коде, попробуйте изменить:

console.log("ActiveX Object created");

с

try{console.log("ActiveX Object created")}catch(err){} или закомментируйте строку с: //.

Смежные вопросы