vueのクリップボードへのコピー関数をカプセル化する

doCopy(content) {
		if (!content) {
			common.msg('复制的内容为空 !')
			return;
		}
		content = typeof content === 'string' ? content : content.toString() // 复制内容,必须字符串,数字需要转换为字符串
		/**
		 * 小程序端 和 app端的复制逻辑
		 */
		//#ifndef H5
		uni.setClipboardData({
			data: content,
			success: function() {
				//success("复制成功~")
				common.msg('success');
			},
			fail: function() {
				common.msg("复制失败~")
			}
		});
		setClipboardText(content);
		//#endif

		/**
		 * H5端的复制逻辑
		 */
		// #ifdef H5
		if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断
			// 不支持
			common.msg('浏览器不支持')
			return;
		}
		let textarea = document.createElement("textarea")
		textarea.value = content
		textarea.readOnly = "readOnly"
		document.body.appendChild(textarea)
		textarea.select() // 选择对象
		textarea.setSelectionRange(0, content.length) //核心
		let result = document.execCommand("copy") // 执行浏览器复制命令
		if (result) {
			common.msg("复制成功~")
		} else {
			common.msg("复制失败,请检查h5中调用该方法的方式,是不是用户点击的方式调用的,如果不是请改为用户点击的方式触发该方法,因为h5中安全性,不能js直接调用!")
		}
		textarea.remove()
		// #endif
	},//复制到剪切板

	setClipboardText(text) {
		try {
			var os = plus.os.name;
			text = text || '';
			if ('iOS' == os) {
				var pasteboard = plus.ios.invoke('UIPasteboard', 'generalPasteboard');
				plus.ios.invoke(pasteboard, 'setValue:forPasteboardType:', text, 'public.utf8-plain-text');
			} else {
				var main = plus.android.runtimeMainActivity();
				var clip = main.getSystemService('clipboard');
				plus.android.invoke(clip, 'setText', text);
			}
		} catch (e) {
			console.error('error @setClipboardText!!');
		}
	}

おすすめ

転載: blog.csdn.net/wgb0409/article/details/122378022