PowerPoint插件(应用程序)是否有幻灯片转换事件?

3

我正在为PowerPoint开发Office插件。这是一个现代的“插件”,适用于Office商店,而不是旧式插件。

有没有一种方法可以在活动幻灯片更改时收到通知?

我的情况是,在演示文稿正在进行时,当幻灯片更改时,我想在我的插件代码中执行某些操作。

我的应用程序目前可以是内容或任务窗格应用程序。

1个回答

4

没有直接的方法可以实现此功能。Office JS库在PowerPoint中没有幻灯片转换事件。

然而,有一种不太正规的方法可以实现此功能,它涉及定期刷新Web应用程序并使用SlideRange的CoercionType获取getSelectedDataAsync。这会给您文档中所有幻灯片的完整范围,从中您可以获取当前幻灯片的索引。您可以将该索引存储在设置中,并检查是否更改,如果更改,则触发事件。

以下是基本代码(每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);

2
你好!有没有计划为幻灯片更改事件添加回调支持?看起来马丁不是唯一需要这个的人))) - Victor Suzdalev
自从三年前,这个幻灯片变化事件被添加了吗? - Jacob
我正在拼命寻找解决方案,这个可能是一个好方法,但它只在“编辑”模式下工作,在“读取”模式下会在控制台中出现错误。是否有一种解决方法可以在幻灯片开始后工作?编辑:我的错,它完美地工作,除了当你缩小幻灯片控制器以尝试观看后面的调试控制台时,它在其他情况下都很好。 - naholyr
很好,很高兴这个答案仍然有一定的价值。 - Martin Beeby
由于PowerPoint桌面版使用Internet Explorer作为内部浏览器,getSelectedDataAsync会导致内存泄漏。有其他替代方案吗? - robdev91

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接