收藏
回答

关于wx.setClipboardData在安卓中调用失败原因?

问题发生的原因:

接到公司中的一个需求,需要禁止用户的粘贴和复制功能,oncopy和onpaste这两个事件在小程序中没有具体的绑定规则,经过实验绑定此方法无效,后续通过在用户进入页面时手动设置用户从外部复制粘贴过来的内容,规避用户复制的操作,来实现这个需求。

wx.setClipboardData在IOS平台下将data参数设置为空串时,可以触发此事件,当安卓机型进行调用时则提示调用该方法失败。

onShow() {
    console.log('onShow')
    // 禁止用户复制粘贴
    uni.setClipboardData({
      data: '',
      success: (res) => {
        console.log('success', res)
        uni.hideToast()
      },
      fail: (err) => {
        console.log('fail', err)
      },
      complete: (c) => {
        console.log('complete', c)
      }
    })
}


踩坑点:

后续将data设置为空格字符时,安卓测试调用该wx.setClipboardData方法成功。

uni.setClipboardData({
  data: ' ',
  success: (res) => {
     console.log('success', res)
     uni.hideToast()
  },
}


期望:

望微信团队能够对此API做出调整,不同机型相同的平台下相同API需要做到参数的统一,严谨。

回答关注问题邀请回答
收藏

4 个回答

  • 微盟
    微盟
    2023-03-14

    安卓机型中的输入法的 快捷粘贴/剪切板 功能严格来讲是属于输入文本,而不是粘贴。

    或者可以尝试限制一次输入的文本长度。

    2023-03-14
    有用 1
    回复
  • 长安
    长安
    2023-12-22

    也是遇到了这个问题,ios机型可以设置空字符串到剪切板实现清空剪切板,但是安卓机型设置空字符串就直接走fail,并且剪切板也没能被覆盖

    2023-12-22
    有用
    回复
  • 小马哥
    小马哥
    2023-10-26
    uni.setClipboardData这个方法基础库高了就用不了了
    
    2023-10-26
    有用
    回复 2
    • 小马哥
      小马哥
      2023-10-26
      2.32.3版本以上就用不了了
      2023-10-26
      回复
    • 努力de
      努力de
      2023-11-02
      还真是,我降低了也不行啊
      2023-11-02
      回复
  • ninja
    ninja
    2023-03-13

    新的问题产出:

    华为的机型调用wx.setClipboardData可以通过data参数来设置粘贴内容,但是华为手机的输入法(小艺输入法)通过快捷粘贴的功能也可以将文本重新粘贴到input当中。

    有没有大佬有解决方案?

    2023-03-13
    有用
    回复
登录 后发表内容