【问题标题】:Detect Changes on Word (API Office)检测 Word 上的更改(API Office)
【发布时间】:2019-01-25 07:06:44
【问题描述】:

当您编辑 Word 文档时,它会在文件有任何更新后自动检测。

我在 Microsoft 文档中没有找到此功能,它存在吗?

因为,我只想在有修改的情况下显示一个弹出窗口(退出)。

目前,我必须比较我的两个(base64 - 字符串)文档,这似乎不可靠,我更喜欢一个事件。

谢谢

更多信息: 我的代码基于https://docs.microsoft.com/en-us/javascript/api/office/office.document?view=office-js#getfileasync-filetype--options--callback- (getFile)

function _arrayBufferToBase64( buffer ) {
    var binary = '';
    var bytes = new Uint8Array( buffer );
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode( bytes[ i ] );
    }
    return window.btoa( binary );
}

【问题讨论】:

    标签: typescript ms-word office-js


    【解决方案1】:

    我不知道 COM 对象模型中有任何 事件 可以检测 Word 文档何时正在/已被编辑。

    有一个Saved 属性可以查询以了解是否进行了更改。然而,这并不意味着对文档进行没有的更改。它只报告是否有任何更改尚未保存到磁盘(True = 没有更改挂起;False = 内存中存在尚未保存的更改)。

    还有一个DocumentBeforeSave 事件会在发出Save 命令时发出通知。

    Word JS API 还有一个Document.Saved 属性:https://docs.microsoft.com/en-us/javascript/api/word/word.document?view=office-js#saved

    Office JS API 有一个事件BindingDataChanged 可能会有所帮助。从这里开始https://docs.microsoft.com/en-us/javascript/api/office/office.eventtype?view=office-js 和这里https://docs.microsoft.com/en-us/javascript/api/office/office.binding?view=office-js

    如果有必要知道是否进行了任何更改,那么就需要进行比较。

    【讨论】:

    • 您好!抱歉耽搁了,非常感谢您的回复。我正在使用“insertFileFromBase64(...)”(Office Js)所以,我认为不可能使用“保存”事件/属性(我将/不能将其保存在磁盘上)。我的问题是,我不知道为什么,我的值(字符串 base64)发生了变化,而我什至没有更改文档(我正在使用“getFile()”,然后在另一个变量上复制。就在我比较之前,我用相同的方法得到整个文档,但它永远不相等(===)(长度因示例而异)我不知道这是编码的原因还是getFile()。
    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多