Office-JS Word加载项文档到边栏通信

时间:2019-08-20 10:41:50

标签: ms-word office-js office-addins word-addins

我正在为Microsoft Word开发任务窗格加载项。到目前为止,我可以通过滥用OOXML插入功能将注释放置在来自边栏的Docx中。

我想知道是否可以监视最终用户对评论的操作。评论是否被用户删除或接受?监视评论的上下文也很重要-更改是否很大?

我考虑了以下方法:

  • 为注释的上下文创建ContentControl,可以将事件挂接到该注释的检查选择和更改的事件。不利之处在于这些ContentControl会影响用户界面,并且最终用户可能无法理解。还有更多的“背景”方法可以做到这一点而又不会对UI造成太大影响?

  • 在评论中创建一个交互超链接。我不确定我们是否可以将其“捕获”为事件或将JavaScript钩子附加到该钩子上,从而使其真正实现该加载项?

  • 按设置的时间间隔轮询文档,以确定注释或注释上下文是否发生了任何变化。我不确定这将是正确的钩子,以及如何在文档中准确定位所有更改。

我错过了一种方法吗?

我知道在Office-js的路线图中已经添加了这些评论,但这已经有两年了,所以我不确定这样做的时限是什么。

编辑

@Cindy感谢您抽出宝贵的时间回复!在您的帮助下,我已经可以使用隐藏的Content Control作为注释的OOXML摘录来获得有效的概念证明(因此,基本上是方法1与OOXML插入相结合)。

我现在可以通过向内容控件添加绑定并使用EventType.BindingDataChanged来捕获一些交互,如下所示:

Office.context.document.bindings.addFromNamedItemAsync("MyContentControlTest", "text", {}, function (result) {
                    if (result.status == "succeeded") {
                        result.value.addHandlerAsync (
                            Office.EventType.BindingSelectionChanged, function() 
                             {console.log("Don't touch me");}
                        )
                    })
})

在ContentControl上附加绑定仍然有些谨慎,但是我无法将事件侦听器直接添加到ContentControl。给定一个命名的内容控件(MyContentControlTest),如何附加事件like the OnDataChanged?如果我没看错的话,最后一个功能仍在预览中,是否有办法找出预期的版本?

0 个答案:

没有答案