UNPKG

use-on-demand

Version:
93 lines 3.84 kB
import Clipboard from 'clipboard'; /** * 依赖【clipboard】这个【第三方库】。 */ var xX_CopyPaste_Util = /** @class */ (function () { function xX_CopyPaste_Util() { } // 简单复制 xX_CopyPaste_Util.prototype.simpleCopy = function (selector) { var clipboard = new Clipboard(selector); return clipboard; }; // 带回调的复制 xX_CopyPaste_Util.prototype.copyWithCb = function (selector, sucCb, errCb) { var clipboard = this.simpleCopy(selector); clipboard.on('success', sucCb); clipboard.on('error', errCb); return clipboard; }; // 指定复制过程中的一些选项 xX_CopyPaste_Util.prototype.specialCopy = function (selector, options) { // 基于目标元素,指定复制的真正元素(比如,我们需要复制目标元素的下一个元素) var clipboard = new Clipboard(selector, options || { // TIP 指定一个目标,真正复制的 是这个目标的下一个兄弟元素 target: function (trigger) { return trigger.nextElementSibling; }, // TIP 指定一个目标,复制的是这个目标的【aria-label】标签属性 text: function (trigger) { return trigger.getAttribute('aria-label'); }, // TIP 指定一个目标,作为 复制过程中的container值(??? 这里的focus改变,指的是什么?) container: document.getElementById('bootstrap-modal'), // TIP 指定操作模式Action(剪切、复制) action: function (elem) { return 'cut'; }, }); }; // 销毁Clipboard对象 xX_CopyPaste_Util.prototype.destroy = function (clipboard) { clipboard.destroy(); }; return xX_CopyPaste_Util; }()); export { xX_CopyPaste_Util }; /** * 没有【第三方库】的【复制粘贴】工具。 */ var xX_CopyPaste_Util_noThirdLib = /** @class */ (function () { function xX_CopyPaste_Util_noThirdLib() { } /** * * Copy到剪切板。 * * 参考资料: * 常规情况: * 参考资料:[How do I copy to the clipboard in JavaScript? - Stack Overflow](https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript) * * 特殊情况(【navigator.clipboard】不存在): * https://stackoverflow.com/a/60292243/6264260 */ xX_CopyPaste_Util_noThirdLib.copy_to_clipboard_compatibleInOldBrowser = function (p) { if (typeof (navigator.clipboard) !== 'undefined') { /** * 一般,只有在【Https站】和【localhost】的情况下,才允许使用【navigator.clipboard】。 */ navigator.clipboard.writeText(p); } else { console.log('navigator.clipboard'); var textArea = document.createElement('textarea'); textArea.value = p; textArea.style.position = 'fixed'; // avoid scrolling to bottom document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; // toastr.info(msg); } catch (err) { // toastr.warning('Was not possible to copy te text: ', err); } document.body.removeChild(textArea); } }; return xX_CopyPaste_Util_noThirdLib; }()); export { xX_CopyPaste_Util_noThirdLib }; //# sourceMappingURL=copy-paste.js.map