UNPKG

qw-utils

Version:

qw Utils package

73 lines (71 loc) 2.48 kB
"use strict"; var _interopRequireDefault = require("/Users/lxy/qw-utils/node_modules/@babel/runtime/helpers/interopRequireDefault.js").default; var _defineProperty2 = _interopRequireDefault(require("/Users/lxy/qw-utils/node_modules/@babel/runtime/helpers/esm/defineProperty.js")); var _clipboard = _interopRequireDefault(require("clipboard")); var _cryptoUtils = require("./cryptoUtils"); class clipboardUtils { constructor() { // 读取剪贴板 (0, _defineProperty2.default)(this, "readClipboard", () => { return new Promise((resolve, reject) => { if (navigator.clipboard?.readText) { navigator.clipboard.readText().then(text => { if (!text) reject('剪贴板为空或者不包含文本'); return resolve(text); }); } else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V'); }); }); // 解析加密后的剪贴板内容 (0, _defineProperty2.default)(this, "pasteCustomClipboardString", text => { let clipboardData; try { clipboardData = JSON.parse(new _cryptoUtils.cryptoUtils().decrypt(text)); } catch { clipboardData = text; } return clipboardData; }); } /** * 复制文本到剪贴板 * @param text 文本内容 */ copyText(text) { return new Promise((resolve, reject) => { const fakeElement = document.createElement('button'); const clipboard = new _clipboard.default(fakeElement, { text: () => text, action: () => 'copy', container: document.body }); clipboard.on('success', e => { clipboard.destroy(); resolve(e); }); clipboard.on('error', e => { clipboard.destroy(); reject(e); }); document.body.appendChild(fakeElement); fakeElement.click(); document.body.removeChild(fakeElement); }); } // 尝试解析剪贴板内容是否为Excel表格(或类似的)数据格式 pasteExcelClipboardString(text) { const lines = text.split('\r\n'); if (lines[lines.length - 1] === '') lines.pop(); let colCount = -1; const data = []; for (const index in lines) { data[index] = lines[index].split('\t'); if (data[index].length === 1) return null; if (colCount === -1) colCount = data[index].length;else if (colCount !== data[index].length) return null; } return data; } } module.exports = { clipboardUtils };