主题
前端 SDK 常见问题
如何传递自定义参数给接入方?
可通过 WebOffice SDK 初始化时的customArgs
字段设置,例如 customArgs 的值为{"firstname":"jack","lastname":"green"}
,那么该请求头的内容为\_w_appid=xxx&\_w_tokentype=xxx&file_id=xxx&firstname=jack&lastname=green
关于 GetHtmlData() 函数调用时报权限错误
出现该错误的原因是 GetHtmlData 接口依赖剪切板能力,需要文档开启复制权限。您需要在回调服务的文档用户权限 的返回值中将 copy
置为 1。
如何知晓文档加载失败和成功?
通过监听通用事件 fileOpen 即可。
文档类型正确但打开文档失败
在文件本身没有问题的情况下,用户无法打开 PPT 和 Excel 文件,在控制台可以看到 JS 报错,过一段时间后,又可以正常打开了。
出现这个问题的原因可能是用户先使用了错误的文件类型去打开文件,比如用 w 类型去打开 PPT 格式的文档,当再次使用正确的类型打开时就会出现打开异常,原因是 WebOffice 已经对该文件创建了文字编辑会话,使用正确的文档类型打开也会因为内核指令不对应导致报错。
我们 WebOffice 编辑会话默认五分钟无连接就会关闭,所以当您关闭会话再等待一段时间后,该文件又可以正常打开了。
解决方案:关闭所有预览编辑页面,等待一段时间后,使用正确的文件类型打开文件。
如何实现文字大纲的显示与隐藏?
文字组件内,通过 SDK 提供的 API 动态控制大纲的显示与隐藏,示例代码如下:
js
async function showDocumentMap() {
await instance.ready()
const app = instance.Application
// 控制目录显示与否
app.ActiveDocument.ActiveWindow.DocumentMap = true
}
async function hideDocumentMap() {
await instance.ready()
const app = instance.Application
// 控制目录显示与否
app.ActiveDocument.ActiveWindow.DocumentMap = false
}
如何插入表格至指定的内容控件?
如下图所示,需要向指定内容控件中插入表格
js
async function insertTable(i) {
// 内容控件对象
const contentControls = await app.ActiveDocument.ContentControls
// 获取指定内容控件
const contentControl = await contentControls.Item(i)
// 获取内容控件的范围
const range = await contentControl.Range
// 获取起始位置
const start = await range.Start
await app.ActiveDocument.Range.SetRange(start, start)
// 获取所有表格
const tables = await app.ActiveDocument.Tables
// 插入表格
await tables.Add(
app.ActiveDocument.ActiveWindow.Selection.Range, // 位置信息
3, // 新增表格的行数
3, // 新增表格的列数
1, // 启用自动调整功能
1 // 根据表格中包含的内容自动调整表格的大小
)
}
关于调用带有url传参时报跨域错误
以调用 AddMediaObject()为例,当函数调用跨域视频地址后,其控制台常见报错,如下图所示:
出现该错误的原因是调用 AddMediaObject 的视频url传参存在跨域,建议业务方增加跨域白名单处理。另外一些视频url访问报 403 Forbidden 可能是url服务作出的访问限制,需确保url有权限访问。