移动端某些环境下无法复制粘贴

介绍自定义监听剪贴板方法的使用。

WebOffice 在某些环境下无法直接获取系统剪贴板数据, 用户如果能通过外部方法拿到系统剪贴板数据,可以通过以下方案注入到 WebOffice 内部剪贴板中,实现对外部数据的粘贴功能。

前提-自行获取系统剪贴板数据

/**
* 获取系统剪贴板数据的方法一般由运行环境提供
* 例如微信小程序的 wx.getClipboardData, 获取的过程与 WebOffice 的逻辑无关。
*/
const getData = () => {
  // 使用外部环境提供的方法获取到剪贴板数据
  // 如 let data = wx.getClipboardData(...)
  let data = {text: '123'}
  return data
}

关键-在粘贴时机注入数据

通过 config 配置参数getClipboardData,可以在移动端App从系统剪切板获取数据。

粘贴文档时,可以通过传入getClipboardData参数,调用传入函数获取系统剪切板数据,返回一个Promise或者Object。示例代码如下。

// 定义注入系统剪贴板数据的回调函数
const listenPasteAndInsertData = () => {

  const clipboardData = getData() // 通过外部方法获取剪贴版数据
  return Promise.resolve({ 
    text: clipboardData.text,
    html: clipboardData.html,
    updateExternal: true,
  })
}


// 作为初始化参数配置
aliyun.config({
  ...
  getClipboardData: listenPasteAndInsertData,
  ...
})