Ms word Word JS api在#document.save上的本地安装和浏览器版本在刚刚打开的文档上的不同行为

Ms word Word JS api在#document.save上的本地安装和浏览器版本在刚刚打开的文档上的不同行为,ms-word,office-js,word-addins,Ms Word,Office Js,Word Addins,我构建了一个扩展,定期检查文档是否已更改。这是通过使用使用Word JS Api的函数的间隔实现的 根据报告: 指示文档中的更改是否已保存值为true表示文档自保存后未更改 我的 示例代码为: setInterval(function () { isSaved(); }, 1000 ); 当一个现有文档被删除并且不做任何处理时,我们可以期望值为true,因为没有发生任何更改。这正是在Word Online上打开它时发生的情况。但是,在我的本地Word应用程序上,它返回false 如何使其行为相

我构建了一个扩展,定期检查文档是否已更改。这是通过使用使用Word JS Api的函数的间隔实现的

根据报告:

指示文档中的更改是否已保存值为true表示文档自保存后未更改

我的

示例代码为:

setInterval(function () { isSaved(); }, 1000 );
当一个现有文档被删除并且不做任何处理时,我们可以期望值为
true
,因为没有发生任何更改。这正是在Word Online上打开它时发生的情况。但是,在我的本地Word应用程序上,它返回
false


如何使其行为相同?如果文档未被编辑,为什么会返回
false

文档在打开但未编辑后被标记为“脏”的一个常见原因是更新到外部源(例如链接的Excel表或图表)的连接和字段代码

例如,如果文档的页脚中有一个
页面
字段,则该字段将在打开文档时更新。即使值没有更改,Word UI仍将此视为对文档的更改。因此,其
saved
属性设置为
false

在Word Online中看不到这一点的原因是该版本不支持使用(插入、编辑或更新)字段代码。Word Online不会删除文档中存在的字段代码,可能会显示上次保存文档时计算出的字段代码结果。但是,由于Word Online不更新字段代码,因此在该环境中,当Windows或Mac版的Word中没有该属性时,
保存的
属性将为
true


所有环境的值都相同的唯一方法是删除Word打开文档时更新的任何内容。字段代码可以“锁定”,但不能使用Office JS API,因为Office JS API不支持字段代码(具有讽刺意味的是,因为它们在Word Online中不可用)。

谢谢,Cindy。非常有趣的捕获。这可能是一些文件的原因。然而,我打开了一个新的空白文档,编写了“test”,并将其保存为“test.docx”。然后我关闭Word,再次打开同一个文档。它仍然显示为已更改,但与外部源没有连接。感觉问题还不止于此。@IgorGalvão它还可能与创建文档的模板有关(并且仍然会链接)。例如,如果文档设置为自动更新样式,或者模板中是否有任何“自动”宏。也可能是因为在Word环境中运行的任何加载项。。。
export const isSaved  = async () => {
  return Word.run(async context => {
    const thisDocument = context.document;
    context.load(thisDocument, 'saved');

    await context.sync();

    // edited bellow code for reprodutibility
    console.log(thisDocument.saved);
  });
}