- 项目使用jquery框架
- 纯h5复制粘贴
- 解决了iscroll4阻止所有默认事件,长按无法弹出复制菜单
项目需要写一个上拉加载页面,页面中的物流信息需要可复制粘贴,同时需要兼容到ios9和安卓4.0.0, 经过大量搜索,最终使用clipboard。代码如下
<p class="wldh">物流单号:中通 123904040209<i class="copy copytkl_btn" data-clipboard-text="复制的内容" onclick="copyToBoard()">复制</i>
</p>
复制代码
function copyToBoard(mytext){var copyBtn = new ClipboardJS('.copy');copyBtn.on("success",function(e){mui.toast('复制成功', {});e.clearSelection();});copyBtn.on("error",function(e){//复制失败;mui.toast('复制失败,请长按复制', {});console.log( e.action );});
}
复制代码
效果如图
在安卓和ios主流机型都正常,但是在ios9和华为荣耀某些机型(安卓4.0.0)无法复制,弹出'复制失败,请长按复制'语句
解决方案{纯css可解决)
//长按复制内容一定要p标签
p的父元素{-webkit-user-select:text;
}
p{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;
}
复制代码
但是页面使用了iscroll4(上拉加载),屏蔽了页面所有的默认事件导致长按无法弹出复制菜单。转换iscroll5的成本略高,且页面的流畅程度不如iscroll4。
根据www.bbsmax.com/A/6pdD1xjRzw 改了iscroll4源码,源码链接如下 https://pan.baidu.com/s/1LpIPyO5OqEZxHUrJ6C5Pcw 提取码: 1vbp
修改的页面如下
preventDefaultException:".wldh|.posdetail|.sqtime|.zftime"
复制代码
增加到上拉加载页面中
//上拉加载if (document.getElementById("wrapper1") != null) {var myscroll = new iScroll("wrapper1", {preventDefaultException:".wldh|.posdetail|.sqtime|.zftime",onScrollMove: function () { //拉动时//上拉加载if (this.y < this.maxScrollY - 50) {$("#wrapper1 .pull-loading").html("释放加载");$("#wrapper1 .pull-loading").addClass("loading");} else {$("#wrapper1 .pull-loading").html("上拉加载");$("#wrapper1 .pull-loading").removeClass("loading");}},onScrollEnd: function (e) { //拉动结束时//上拉加载 if ($("#wrapper1 .pull-loading").hasClass('loading')) {$("#wrapper1 .pull-loading").html("加载中...");pullOnLoad1(); //调用方法获取数据}}}); }
复制代码
PS:也是摸索很久才找到的方案,希望能帮助到你们。