1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

帖子
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 157|回复: 5

[求助] wpsjs加载项没法粘贴内容怎么解决?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-3-16 10:20 | 显示全部楼层 |阅读模式
根据官方开发文档生成了第一个项目HelloWps,仿照Dialog写了第一个弹窗,结果显示没问题,就是显示界面中的几个输入项都只能输入内容,没有办法通过快捷键粘贴内容,每次一粘贴,内容就到了当前sheet页的A1单元格里了,不知道有没有哪位老师知道怎么解决这种问题?下面是弹窗的代码

  1. <template>
  2.   <div class="setup-container">
  3.     <div class="form-group">
  4.       <label for="docType">类型</label>
  5.       <select id="docType" v-Doc="DocConfig.docType">
  6.         <option value="AA">AA</option>
  7.         <option value="BB">BB</option>
  8.       </select>
  9.     </div>
  10.     <div class="form-group">
  11.       <label for="docUrl">文件地址</label>
  12.       <input type="text" id="docUrl" v-Doc="DocConfig.docUrl" placeholder="请输入文件地址" />
  13.     </div>
  14.     <div class="form-group">
  15.       <label for="docKey">文件密钥</label>
  16.       <div class="password-input">
  17.         <input :type="showPassword ? 'text' : 'password'" id="docKey" v-Doc="DocConfig.docKey" placeholder="请输入文件密钥" />
  18.         <button class="toggle-password" @click="togglePassword" type="button">
  19.           {{ showPassword ? '隐藏' : '显示' }}
  20.         </button>
  21.       </div>
  22.     </div>
  23.     <div class="form-group">
  24.       <label for="docName">文件名称</label>
  25.       <input type="text" id="docName" v-Doc="DocConfig.docName" placeholder="请输入文件名称" />
  26.     </div>
  27.     <div class="check-result" v-if="checkResult !== null">
  28.       <span :class="{ 'success': checkResult, 'error': !checkResult }">
  29.         {{ checkResult ? '检查通过' : '检查不通过' }}
  30.       </span>
  31.     </div>
  32.     <div class="button-group">
  33.       <button @click="checkConfig" :disabled="isLoading">{{ isLoading ? '检查中...' : '检查' }}</button>
  34.       <button @click="saveConfig" :disabled="isLoading">保存</button>
  35.     </div>
  36.   </div>
  37. </template>

  38. <script>
  39. import setupUtils from './js/setup.js'

  40. export default {
  41.   name: 'Setup',
  42.   data() {
  43.     return {
  44.       DocConfig: {
  45.         docType: '',
  46.         docUrl: '',
  47.         docKey: '',
  48.         docName: ''
  49.       },
  50.       showPassword: false,
  51.       checkResult: null,
  52.       isLoading: false
  53.     }
  54.   },
  55.   mounted() {
  56.     // 获取已保存的配置
  57.     this.loadConfig()
  58.    
  59.     // 阻止默认的粘贴行为
  60.     document.addEventListener('paste', this.handleGlobalPaste, true)
  61.   },
  62.   beforeUnmount() {
  63.     // 移除事件监听
  64.     document.removeEventListener('paste', this.handleGlobalPaste, true)
  65.   },
  66.   methods: {
  67.     // 加载配置
  68.     loadConfig() {
  69.       const config = setupUtils.getDocConfig()
  70.       this.DocConfig = { ...config }
  71.     },
  72.     // 切换密码显示/隐藏
  73.     togglePassword() {
  74.       this.showPassword = !this.showPassword
  75.     },
  76.     // 检查配置
  77.     async checkConfig() {
  78.       this.isLoading = true
  79.       this.checkResult = null
  80.       
  81.       try {
  82.         const result = await setupUtils.checkDocConfig(this.DocConfig)
  83.         this.checkResult = result
  84.       } catch (error) {
  85.         console.error('检查配置出错:', error)
  86.         this.checkResult = false
  87.       } finally {
  88.         this.isLoading = false
  89.       }
  90.     },
  91.     // 保存配置
  92.     saveConfig() {
  93.       try {
  94.         const result = setupUtils.saveDocConfig(this.DocConfig)
  95.         if (result) {
  96.           alert('配置保存成功')
  97.         } else {
  98.           alert('配置保存失败')
  99.         }
  100.       } catch (error) {
  101.         console.error('保存配置出错:', error)
  102.         alert('配置保存失败')
  103.       }
  104.     },
  105.     // 处理全局粘贴事件
  106.     handleGlobalPaste(event) {
  107.       // 检查当前焦点是否在我们的输入框内
  108.       const activeElement = document.activeElement
  109.       const isInOurForm = activeElement && (
  110.         activeElement.id === 'docType' ||
  111.         activeElement.id === 'docUrl' ||
  112.         activeElement.id === 'docKey' ||
  113.         activeElement.id === 'docName'
  114.       )
  115.       
  116.       // 如果焦点在我们的表单内,允许粘贴行为
  117.       if (isInOurForm) {
  118.         // 不做任何阻止,允许默认粘贴行为
  119.       } else {
  120.         // 如果焦点不在我们的表单内,则阻止事件传播
  121.         event.stopPropagation()
  122.       }
  123.     }
  124.   }
  125. }
  126. </script>

  127. <style scoped>
  128. .setup-container {
  129.   max-width: 500px;
  130.   margin: 0 auto;
  131.   padding: 20px;
  132.   font-family: Arial, sans-serif;
  133. }

  134. h2 {
  135.   text-align: center;
  136.   margin-bottom: 20px;
  137.   color: #333;
  138. }

  139. .form-group {
  140.   margin-bottom: 15px;
  141. }

  142. label {
  143.   display: block;
  144.   margin-bottom: 5px;
  145.   font-weight: bold;
  146.   color: #555;
  147. }

  148. input, select {
  149.   width: 100%;
  150.   padding: 8px 10px;
  151.   border: 1px solid #ddd;
  152.   border-radius: 4px;
  153.   font-size: 14px;
  154.   box-sizing: border-box;
  155. }

  156. input:focus, select:focus {
  157.   outline: none;
  158.   border-color: #4a90e2;
  159.   box-shadow: 0 0 3px rgba(74, 144, 226, 0.3);
  160. }

  161. .password-input {
  162.   display: flex;
  163.   position: relative;
  164. }

  165. .password-input input {
  166.   flex: 1;
  167.   padding-right: 70px;
  168. }

  169. .toggle-password {
  170.   position: absolute;
  171.   right: 0;
  172.   top: 0;
  173.   height: 100%;
  174.   padding: 0 10px;
  175.   background: #f5f5f5;
  176.   border: 1px solid #ddd;
  177.   border-left: none;
  178.   border-radius: 0 4px 4px 0;
  179.   cursor: pointer;
  180.   font-size: 12px;
  181. }

  182. .button-group {
  183.   display: flex;
  184.   justify-content: space-between;
  185.   margin-top: 20px;
  186. }

  187. button {
  188.   padding: 8px 20px;
  189.   background-color: #4a90e2;
  190.   color: white;
  191.   border: none;
  192.   border-radius: 4px;
  193.   cursor: pointer;
  194.   font-size: 14px;
  195.   transition: background-color 0.3s;
  196. }

  197. button:hover {
  198.   background-color: #3a80d2;
  199. }

  200. button:disabled {
  201.   background-color: #a0a0a0;
  202.   cursor: not-allowed;
  203. }

  204. .check-result {
  205.   margin-top: 15px;
  206.   padding: 10px;
  207.   border-radius: 4px;
  208.   text-align: center;
  209. }

  210. .success {
  211.   color: #2ecc71;
  212.   font-weight: bold;
  213. }

  214. .error {
  215.   color: #e74c3c;
  216.   font-weight: bold;
  217. }
  218. </style>
复制代码


TA的精华主题

TA的得分主题

发表于 2025-3-16 17:06 | 显示全部楼层
目前测试下来,不论是模态还是非模态,都没有出现焦点的问题,也许是版本问题吧,不太清楚。。。。。。
1.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-3-19 09:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wodewan 发表于 2025-3-16 17:06
目前测试下来,不论是模态还是非模态,都没有出现焦点的问题,也许是版本问题吧,不太清楚。。。。。。

您的wps是什么版本的?

TA的精华主题

TA的得分主题

发表于 2025-3-19 11:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-3-19 15:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-3-19 20:50 | 显示全部楼层
wodewan 发表于 2025-3-19 11:53
官方最新个人版,20305

我的是mac版的不行……
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-4-24 08:23 , Processed in 0.024845 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表