PowerPoint 加载项(应用程序)是否有幻灯片转换事件
Is there a slide transition event for PowerPoint add-in (apps)
我正在开发 PowerPoint 的 Office 加载项。这是 Office 商店的现代 'add-in',而不是旧式加载项。
有没有办法在活动幻灯片更改时收到通知?
我的情况是,当幻灯片随着演示文稿而改变时,我想在我的加载项代码中做一些事情。
我的应用在此阶段可能是内容或任务窗格应用。
没有直接的方法可以做到这一点。 Office JS 库没有 PowerPoint 中的幻灯片切换事件。
但是,有一种 hacky 方法可以做到这一点,它涉及定期刷新 Web 应用程序并使用 getSelectedDataAsync 和 SlideRange 的 CoercionType。这为您提供了文档中所有幻灯片的范围,您可以从中获取当前幻灯片的索引。您可以将该索引存储在一个设置中,并检查它是否发生变化,如果您有您的事件。
这是基本代码(每1.5秒刷新一次)
//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);
我正在开发 PowerPoint 的 Office 加载项。这是 Office 商店的现代 'add-in',而不是旧式加载项。
有没有办法在活动幻灯片更改时收到通知?
我的情况是,当幻灯片随着演示文稿而改变时,我想在我的加载项代码中做一些事情。
我的应用在此阶段可能是内容或任务窗格应用。
没有直接的方法可以做到这一点。 Office JS 库没有 PowerPoint 中的幻灯片切换事件。
但是,有一种 hacky 方法可以做到这一点,它涉及定期刷新 Web 应用程序并使用 getSelectedDataAsync 和 SlideRange 的 CoercionType。这为您提供了文档中所有幻灯片的范围,您可以从中获取当前幻灯片的索引。您可以将该索引存储在一个设置中,并检查它是否发生变化,如果您有您的事件。
这是基本代码(每1.5秒刷新一次)
//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);