Add in 是否存在PowerPoint加载项(应用程序)的幻灯片转换事件
我正在为PowerPoint开发Office加载项。这是一个现代的“插件”的办公室商店,而不是老式的插件 是否有办法在活动幻灯片更改时收到通知 我的设想是,当幻灯片在演示文稿中更改时,我希望在外接程序代码中执行一些操作Add in 是否存在PowerPoint加载项(应用程序)的幻灯片转换事件,add-in,office-addins,powerpoint-2013,Add In,Office Addins,Powerpoint 2013,我正在为PowerPoint开发Office加载项。这是一个现代的“插件”的办公室商店,而不是老式的插件 是否有办法在活动幻灯片更改时收到通知 我的设想是,当幻灯片在演示文稿中更改时,我希望在外接程序代码中执行一些操作 在此阶段,我的应用程序可能是内容或任务窗格应用程序。没有直接的方法可以做到这一点。Office JS库没有PowerPoint中幻灯片转换的事件 然而,有一种黑客方法可以做到这一点,包括定期刷新web应用程序,并使用getSelectedDataAsync和强制类型的SlideR
在此阶段,我的应用程序可能是内容或任务窗格应用程序。没有直接的方法可以做到这一点。Office JS库没有PowerPoint中幻灯片转换的事件 然而,有一种黑客方法可以做到这一点,包括定期刷新web应用程序,并使用getSelectedDataAsync和强制类型的SlideRange。这将为您提供文档中的全部幻灯片,并从中可以获得当前幻灯片的索引。您可以将该索引存储在一个设置中,并检查它是否发生了更改(如果您有您的事件) 这是基本代码(每1.5秒刷新一次)
你好是否有计划为幻灯片更改事件添加回调支持?看起来马丁不是唯一一个需要这个的人)因为这是三年前的事了,这个幻灯片更改事件被添加了吗?我正在拼命寻找一个解决方案,这个本来可以解决问题的,但它实际上只在“编辑”模式下工作,一旦在“阅读”模式下,我在控制台中就会出错。幻灯片放映开始后是否有解决办法?编辑:我的错,它工作得很好,除了当你减少幻灯片控制器以尝试观看后面的调试控制台时,它在其他情况下工作得很好。很好,很高兴这个答案仍然提供了一些价值。由于PowerPoint desktop使用Internet Explorer作为内部浏览器,
getSelectedDataAsync
引发内存泄漏。有其他的解决方案吗?
//Automatically refresh
window.setInterval(function () {
//get the current slide
Office.context.document.getSelectedDataAsync(Office.CoercionType.SlideRange, function (r) {
// null check
if (!r || !r.value || !r.value.slides) {
return;
}
//get current slides index
currentSlide = r.value.slides[0].index;
//get stored setting for current slide
var storedSlideIndex = Office.context.document.settings.get("CurrentSlide");
//check if current slide and stored setting are the same
if (currentSlide != storedSlideIndex) {
//the slide changed - do something
//update the stored setting for current slide
Office.context.document.settings.set("CurrentSlide", currentSlide);
Office.context.document.settings.saveAsync(function (asyncResult) { });
}
});
}, 1500);