paste.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import common from '../../utils/util';
  2. import main from '../../utils/main';
  3. const COUNT_MAX=10;
  4. const app = getApp();
  5. let EntryWords="";//进来的单词,用于返回恢复
  6. let IsEdit=false; //是否编辑过,编辑过不恢复
  7. Page({
  8. data: {
  9. Words:"",
  10. importWordStr:"",//输入过的单词
  11. inputThreshold: 100, // 时间阈值,单位毫秒,可根据实际情况调整
  12. },
  13. onLoad: function (options) {
  14. let that = this;
  15. EntryWords=app.globalData.SelectedWords;
  16. let words=app.globalData.SelectedWords.join("\n");
  17. that.setData({
  18. Containnerheight: main.getWindowHeight(),
  19. Words:words,
  20. });
  21. },
  22. handlePaste: function(e) {
  23. let that = this;
  24. // 获取剪贴板内容
  25. wx.getClipboardData({
  26. success: function(res) {
  27. let str="";
  28. if (that.data.Words)
  29. str+=that.data.Words+"\n";
  30. str+=that.setWordsArr(res.data).join("\n");
  31. // let arr=that.setWordsArr(str);
  32. // str=arr.join("\n");
  33. that.setData({
  34. Words: str,
  35. importWordStr:str,
  36. });
  37. },
  38. fail: function(err) {
  39. console.error('获取剪贴板失败', err);
  40. }
  41. });
  42. },
  43. bindKeyInput:function(e){
  44. let that=this;
  45. let words = e.detail.value;
  46. let currentTime = new Date().getTime();
  47. let timeDiff = currentTime - this.data.lastInputTime;
  48. if (timeDiff > this.data.inputThreshold && words.length>that.data.Words.length+2) {
  49. console.log("可能是粘贴操作");
  50. let str=that.data.importWordStr;
  51. let str2=words.substring(str.length);
  52. str+="\n"+str2;
  53. let arr=that.setWordsArr(str);
  54. words=arr.join("\n");
  55. } else {
  56. console.log("可能是键盘输入");
  57. }
  58. this.setData({
  59. Words: words,
  60. importWordStr:words,
  61. lastInputTime: currentTime
  62. });
  63. IsEdit=true;
  64. },
  65. onUnload:function(e){
  66. if (!IsEdit){
  67. app.globalData.SelectedWords=EntryWords;
  68. }
  69. },
  70. showExample:function(){
  71. this.setData({
  72. IsShowExample:!this.data.IsShowExample,
  73. });
  74. },
  75. setWordsArr:function(data){
  76. let that=this;
  77. // 这里可以处理粘贴的数据,比如按空格分割成单词
  78. let words = data.split(/[\r\n]+/); // 按换行分割
  79. let words2 = data.split(" "); // 按空格分割
  80. //debugger;
  81. if (words2.length>20 || words2.length>words.length)
  82. words=words2;
  83. else if (typeof data === 'string' && data.indexOf(",")>0)
  84. words = data.split(",");
  85. // 过滤掉空字符串和非单词内容
  86. words = common.filterWordsWithSpecialChars(words);
  87. words = common.removeDuplicateAndTrimStrings(words);
  88. //debugger;
  89. let arr2=[];
  90. if (words.length>10){
  91. for(let i=0;i<10;i++)
  92. arr2.push(words[i]);
  93. words=arr2;
  94. }
  95. return words;
  96. },
  97. submit:function(){
  98. if (IsEdit){
  99. let words=this.setWordsArr(this.data.Words);
  100. app.globalData.SelectedWords=words;
  101. }
  102. wx.navigateBack({
  103. delta: 1
  104. });
  105. },
  106. clearInput:function(){
  107. app.globalData.SelectedWords=[];
  108. this.setData({
  109. Words:"",
  110. });
  111. IsEdit=false;
  112. },
  113. // 阻止示例面板的触摸事件传递到底层
  114. catchTouchMove: function(e) {
  115. // 这个函数不需要做任何事情,只需要捕获事件防止冒泡
  116. return false;
  117. },
  118. onShareAppMessage: function () {
  119. return {
  120. title: app.globalData.ShareTitle,
  121. path: app.globalData.SharePath + '?UserID=' + app.globalData.userInfo.UserID,
  122. imageUrl: app.globalData.ShareImage,
  123. }
  124. },
  125. })