文档历史记录
您可以使用文档编辑器查看文本文档、电子表格或演示文稿的历史记录。
文档历史记录存储在文档存储服务中。文档编辑器在左侧面板中将文档历史记录显示为版本列表。当您从列表中选择一个文档版本时,它将显示出来以供预览。
以下参考图和步骤解释了在ONLYOFFICE文档中查看历史记录的过程。
- 用户在文档编辑器中编辑文档时,点击版本历史记录按钮
- 文档编辑器向文档存储服务请求文档版本列表。
- 文档存储服务发送带有要显示的版本号的文档版本列表。
- 文档编辑器向文档存储服务请求有关所选文档版本的信息。
- 文档存储服务发送所选文档版本的链接。
- 文档编辑器显示所选的文档版本。
- 当用户点击文档版本列表中的另一个版本时,文档编辑器会重新请求要显示的该版本的信息。
- 用户点击关闭历史记录按钮,文档编辑器隐藏文档版本列表。
实际操作方法
-
创建一个html文件,用于打开文档。
-
在文档编辑器初始化的配置脚本中,指定用于打开版本历史记录列表的事件处理程序。当调用onRequestHistory事件时,必须执行refreshHistory方法。如果每个版本都存在历史记录参数,此方法包含每个文档版本的文档历史记录。
function onRequestHistory() {
docEditor.refreshHistory({
currentVersion: 2,
history: [
{
created: "2010-07-06 10:13 AM",
key: "af86C7e71Ca8",
user: {
id: "F89d8069ba2b",
name: "Kate Cage",
},
version: 1,
},
{
created: "2010-07-07 3:46 PM",
key: "Khirz6zTPdfd7",
user: {
id: "78e1e841",
name: "John Smith",
},
version: 2,
},
],
})
}
const docEditor = new DocsAPI.DocEditor("placeholder", {
events: {
onRequestHistory,
},
}) -
在文档编辑器初始化的配置脚本中,指定将从历史记录中选择版本的事件处理程序。当调用onRequestHistoryData事件时,必须执行setHistoryData方法。此方法包含相应版本文件的绝对URL。
调用setHistoryData方法查看文档历史版本时,必须添加令牌以验证参数。
function onRequestHistoryData(event) {
const version = event.data
docEditor.setHistoryData({
fileType: "docx",
key: "Khirz6zTPdfd7",
token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tZXhhbXBsZS1kb2N1bWVudC5kb2N4IiwidmVyc2lvbiI6Mn0.iRcdHve235L5K1e29SmUBkuHcxb63WHRko51WMJlmS0",
url: "https://example.com/url-to-example-document.docx",
version: 2,
})
}
const docEditor = new DocsAPI.DocEditor("placeholder", {
events: {
onRequestHistoryData,
},
}) -
在文档编辑器初始化的配置脚本中,指定当用户点击版本历史记录中的恢复按钮时将恢复文件版本的事件处理程序。当调用onRequestRestore事件时,必须执行refreshHistory方法以再次初始化版本历史记录。如果每个版本都存在历史记录参数,此方法包含每个文档版本的文档历史记录。
function onRequestRestore(event) {
const fileType = event.data.fileType
const url = event.data.url
const version = event.data.version
docEditor.refreshHistory({
currentVersion: 2,
history: [
{
created: "2010-07-06 10:13 AM",
key: "af86C7e71Ca8",
user: {
id: "F89d8069ba2b",
name: "Kate Cage",
},
version: 1,
},
{
changes,
created: "2010-07-07 3:46 PM",
key: "Khirz6zTPdfd7",
serverVersion,
user: {
id: "78e1e841",
name: "John Smith",
},
version: 2,
},
],
})
}
const docEditor = new DocsAPI.DocEditor("placeholder", {
events: {
onRequestRestore,
},
}) -
在浏览器中打开您的html文件,
-
在文档编辑器菜单中打开版本历史记录选项。
-
在文档编辑器初始化的配置脚本中,指定用于显示关闭历史记录按钮的事件处理程序。当用户点击关闭历史记录按钮,试图从查看文档版本历史记录返回文档时,将调用onRequestHistoryClose事件,版本历史记录列表将被隐藏。调用该函数时,必须在编辑模式下再次初始化编辑器。
function onRequestHistoryClose() {
document.location.reload()
}
const docEditor = new DocsAPI.DocEditor("placeholder", {
events: {
onRequestHistoryClose,
},
})
打开带有更改突出显示的文档历史记录
如果文档版本是使用文档编辑器创建的,那么在查看文档历史记录时可以显示文档的更改。为了实现这一点,在保存编辑会话时,除了文档版本本身之外,还必须将额外的数据保存到文档存储服务中。在文档编辑器中编辑后,有关编辑会话期间的更改信息将与已更改的文档一起发送:
当服务器版本更新时,文档编辑器不会使用changess数据来突出显示历史记录中的更改。它只会在changesurl参数中返回已更改的文档。
-
历史记录:当您在侧面板中查看文档历史记录时,此信息允许显示每个文档版本的时间和作者。必须作为发送给refreshHistory方法的对象的属性changes发送。
docEditor.refreshHistory({
currentVersion: 2,
history: [
{
created: "2010-07-06 10:13 AM",
key: "af86C7e71Ca8",
user: {
id: "F89d8069ba2b",
name: "Kate Cage",
},
version: 1,
},
{
changes,
created: "2010-07-07 3:46 PM",
key: "Khirz6zTPdfd7",
serverVersion,
user: {
id: "78e1e841",
name: "John Smith",
},
version: 2,
},
],
})其中changes是保存文档后从历史记录对象返回的changes。
其中serverVersion是保存文档后从历史记录对象返回的serverVersion。
ONLYOFFICE文档会突出显示从当前文档会话开始所做的更改,而不是从文档版本开始时的更改。即使在一个会话期间创建了多个文档版本,该会话中的所有更改都将被突出显示。因此,您无法在文档历史记录中看到使用强制保存选项创建的文档版本。
-
changesurl:包含文档编辑数据的文件的绝对URL,用于显示与特定文档版本相对应的更改。必须保存该文件,并且必须使用setHistoryData方法将其地址作为changesUrl参数发送。必须将前一个文档版本的链接(previous.url)添加到对象中。
调用setHistoryData方法查看文档历史版本时,必须添加令牌以验证参数。
docEditor.setHistoryData({
changesUrl: "https://example.com/url-to-changes.zip",
fileType: "docx",
key: "Khirz6zTPdfd7",
previous: {
fileType: "docx",
key: "af86C7e71Ca8",
url: "https://example.com/url-to-the-previous-version-of-the-document.docx",
},
token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaGFuZ2VzVXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tY2hhbmdlcy56aXAiLCJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwicHJldmlvdXMiOnsiZmlsZVR5cGUiOiJkb2N4Iiwia2V5IjoiYWY4NkM3ZTcxQ2E4IiwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tdGhlLXByZXZpb3VzLXZlcnNpb24tb2YtdGhlLWRvY3VtZW50LmRvY3gifSwidXJsIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS91cmwtdG8tZXhhbXBsZS1kb2N1bWVudC5kb2N4IiwidmVyc2lvbiI6Mn0.ril3Ol3rvYne3g0dG8TdKCiwJ7-7kkYGc6-XWMvp8FU",
url: "https://example.com/url-to-example-document.docx",
version: 2,
})changesurl请求是在浏览器中从添加的具有documentserver域的iframe中发出的,其中documentserver是安装了ONLYOFFICE文档的服务器名称。为了使其正常工作,必须允许跨源HTTP请求(CORS)。这可以通过使用Access-Control-Allow-Origin标头来实现。