APP项目中突然新增一个需求,就是需要被选中的地方长按支持复制功能,然后就是开始各种大搜索,结果找到一种支持复制当前选中的所有的内容,我这边就当作笔记记录下来,同时也公开,希望能帮助你们。
首先需要在mui.init里面设置对应的属性gestureConfig里面的longtap,这个longtap默认的值为false,也就是默认是关闭长按功能。
mui.init({
gestureConfig: {
longtap: true //默认为false
}
});
然后给需要复制内容的标签中class里面添加copy-text,然后监听class里面有copy-text的标签,然后每次触发事件都会使用innerText 获取纯文本,对于多地方需要实现长按复制,所有我将这个方法放在config.js文件中进行复用。代码如下:
function copyText(){
mui('body').on('longtap', '.copy-text', function () {
var copy_content = this.innerText;
var btnArray = ['确认', '取消'];
mui.confirm('您确定要复制该标题内容吗?', '提示', btnArray, function (e) {
if (e.index == 0) {
//判断是安卓还是ios
if (mui.os.ios) { // ios
var UIPasteboard = plus.ios.importClass("UIPasteboard");
var generalPasteboard = UIPasteboard.generalPasteboard();
generalPasteboard.plusCallMethod({ setValue: copy_content, forPasteboardType: "public.utf8-plain-text" });
generalPasteboard.plusCallMethod({ valueForPasteboardType: "public.utf8-plain-text" });
mui.toast('复制成功')
} else { //安卓
var context = plus.android.importClass("android.content.Context");
var main = plus.android.runtimeMainActivity();
var clip = main.getSystemService(context.CLIPBOARD_SERVICE);
plus.android.invoke(clip, "setText", copy_content);
mui.toast('复制成功')
}
}
})
})
}