# 回调消息
# iframe-ready
时机:iframe
完成加载时。
说明:需要在这个回调消息之后发送 init
接口消息初始化编辑器。
必须:是。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'iframe-ready') {
iframeElement.contentWindow.postMessage(
{
action: 'init',
},
'*'
)
}
},
false
)
# refresh-token
时机:Token 过期时。
说明:需要获取最新的 Token,并通过发送接口消息 set-token
更新 Token。
必须:是。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'refresh-token') {
// 获取最新的 token
iframeElement.contentWindow.postMessage(
{
action: 'set-token',
data: {
token: '<LATEST TOKEN>',
},
},
'*'
)
}
},
false
)
# collaboration-success
时机:协作链接建立成功时。
说明:可以处理页面 Loading 等事宜。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'collaboration-success') {
console.log('当前文档id', event.data.data.fid)
}
},
false
)
# sharedb-connection-error
时机:协作链接出错时。
说明:可以处理页面 Loading 等事宜。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'sharedb-connection-error') {
console.log('当前文档id', event.data.data.fid)
}
},
false
)
# submit-text-change-success
时机:用户修改提交成功时。
说明:可以更新外部列表、搜索索引等内容。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'submit-text-change-success') {
console.log('当前文档id', event.data.data.fid)
}
},
false
)
# text-change
时机:当前文档内容发生变更时。
说明:首次加载内容时也会触发。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'text-change') {
}
},
false
)
# user-permission-change
时机:用户权限更新时。
说明:特指当前用户对当前文档的权限。如果变为无权限,应当关闭页面。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'user-permission-change') {
console.log('当前文档id', event.data.data.fid)
console.log('当前用户角色', event.data.data.userPermission)
}
},
false
)
# began-create-annotation
时机:用户点击批注按钮时。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'began-create-annotation') {
console.log('当前文档id', event.data.data.fid)
console.log('将要创建的批注id', event.data.data.annotationGid)
}
},
false
)
# create-annotation
时机:用户创建批注时。
说明:error
不为空时,表示创建批注失败。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'create-annotation') {
console.log('创建批注存在错误', event.data.error)
console.log('当前文档id', event.data.data.fid)
console.log('删除的批注id', event.data.data.annotationGid)
}
},
false
)
# delete-annotation
时机:用户删除批注时。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'delete-annotation') {
console.log('当前文档id', event.data.data.fid)
console.log('删除的批注id', event.data.data.annotationGid)
}
},
false
)
# get-mention-info-list
时机:用户开始@(提及)时。
说明:会同时传递用户输入的内容,需要根据内容返回文档或用户列表。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'get-mention-info-list') {
console.log('当前 @ 搜索 关键词', event.data.data.keyword)
// 获取要加载的联系人信息和文档信息
iframeElement.contentWindow.postMessage(
{
action: 'set-mention-user-list',
data: {
userInfoDTOList: [],
},
},
'*'
)
}
},
false
)
# insert-mention
时机:用户开始@(提及)时。
说明:可以在外部系统如 IM 中发送通知。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'insert-mention') {
console.log('当前文档id', event.data.data.fid)
console.log(
'@ 信息类型 user 为联系人 ,note 为文档',
event.data.data.type
)
console.log('@ 信息 联系人名称 ', event.data.data.name)
console.log('@ 信息 文档id ', event.data.data.fileFid)
}
},
false
)
# mention-doc-click
时机:用户点击提及的文档时。
说明:需要处理点击事件,打开文档或者其他行为。
必须:是。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'mention-doc-click') {
console.log('当前文档id', event.data.data.fid)
console.log('当前文档类型', event.data.data.docType)
}
},
false
)
# file-not-exist
时机:文档不存在时。
说明:比如在其他端被删除了,建议做关闭页面处理。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'file-not-exist') {
console.log('当前文档id', event.data.data.fid)
}
},
false
)
# content-syn-status
时机:内容同步状态变更时。
说明:可以更新文档状态等视图。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'content-syn-status') {
console.log('当前文档id', event.data.data.fid)
console.log('当前同步状态', event.data.data.status)
console.log('内容更新来源', event.data.data.source)
}
},
false
)
备注:
同步状态:
initial
: 协作建立成功saving
: 内容更新saveSuccess
: 内容更新成功saveError
: 内容更新失败
内容更新来源:
local
: 本地编辑ws
: 远程更新
# note-name-change
时机:文档标题变更时。
说明:可以更新外部显示标题的视图。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'note-name-change') {
console.log('当前文档id', event.data.data.fid)
console.log('新笔记标题', event.data.data.noteName)
}
},
false
)
# file-metadata
时机:元数据变更时。
说明:第一次加载时,此消息也会传递现有的元数据内容。按需处理元数据变更时的行为。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'file-metadata') {
console.log('当前文档id', event.data.data.fid)
console.log('元数据', event.data.data.metadata)
}
},
false
)
# active-connections
时机:协作用户变更时。
说明:第一次打开,以及后续建立连接的协作者变化时,都会触发。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'active-connections') {
console.log('当前文档id', event.data.data.fid)
console.log('协作用户信息列表', event.data.data.activeConnections)
}
},
false
)
# doc-html
时机:发送接口消息 get-doc-html
消息后。
说明:返回 HTML 内容,不包含内联 CSS 样式。
必须:否。
示例:
window.addEventListener(
'message',
event => {
if (event.data.action === 'doc-html') {
console.log('当前文档的 HTML 格式', event.data.data.html)
}
},
false
)