setClipboardData.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // #ifdef H5
  2. uni.setClipboardData = function setClipboardData({
  3. data,
  4. success,
  5. fail,
  6. complete
  7. } = {}) {
  8. try {
  9. const x = window.scrollX
  10. const y = window.scrollY
  11. const input = document.createElement('input')
  12. input.setAttribute('readonly', 'readonly')
  13. input.setAttribute('value', data)
  14. input.style.position = 'absolute'
  15. input.style.width = '100px'
  16. input.style.left = '-10000px'
  17. document.body.appendChild(input)
  18. input.focus()
  19. window.scrollTo(x, y)
  20. input.setSelectionRange(0, input.value.length)
  21. document.execCommand('copy')
  22. document.body.removeChild(input)
  23. setTimeout(() => {
  24. const res = {
  25. errMsg: 'setClipboardData:ok',
  26. data
  27. }
  28. success && success(res)
  29. complete && complete(res)
  30. })
  31. } catch (e) {
  32. setTimeout(() => {
  33. const res = {
  34. errMsg: 'setClipboardData:fail'
  35. }
  36. fail && fail(res)
  37. complete && complete(res)
  38. })
  39. }
  40. }
  41. // #endif
  42. // JS对象深度合并
  43. function setClipboardData(obj = {}) {
  44. uni.setClipboardData({
  45. ...obj
  46. });
  47. }
  48. export default setClipboardData;