首先遇到這個需求是就各種百度,但是發(fā)現(xiàn)基本都是用js實(shí)現(xiàn),而且兼容性還非常不好。
但是在尋覓和嘗試的過程中,發(fā)現(xiàn)只需要css代碼也可以完全實(shí)現(xiàn)的,對需要復(fù)制內(nèi)容的標(biāo)簽加上下面這幾行代碼就可以了。
-webkit-touch-callout: all;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
其實(shí)意思就是不限制用戶對內(nèi)容的操作,不禁用系統(tǒng)默認(rèn)菜單,長按會顯示系統(tǒng)自帶的復(fù)制功能進(jìn)行復(fù)制。
使用clipboard.js實(shí)現(xiàn)移動端粘貼復(fù)制
clipboard.js是一款很強(qiáng)大的粘貼復(fù)制的插件,但是在移動端使用,會出現(xiàn)兼容性問題。下面是我常使用的一種解決方案。
html
<input id="foo1" value="http://www.shellad.com/_2SP__22(要復(fù)制的內(nèi)容)" readonly="readonly">
<div class="the_btn_con"><button class="btn" data-clipboard-target="#foo1">復(fù)制</button></div>
js
$(function () {
var clipboard = new Clipboard('.btn');
//優(yōu)雅降級:safari 版本號>=10,提示復(fù)制成功;否則提示需在文字選中后,手動選擇“拷貝”進(jìn)行復(fù)制
clipboard.on('success', function(e) {
alert('復(fù)制成功!')
console.log($(this))
e.clearSelection();
});
clipboard.on('error', function(e) {
alert('請選擇“拷貝”進(jìn)行復(fù)制!')
});
})
注意我在保存要復(fù)制的內(nèi)容時使用的是input控件,而不是div或者span。因為,在測試時只有input的兼容性最好,不會出現(xiàn)問題,能夠保證正常復(fù)制。同時,該插件也不支持safari 版本號<10,所以要做好提示。
總結(jié)
以上所述是小編給大家介紹的HTML5實(shí)現(xiàn)移動端復(fù)制功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!