首先遇到這個(gè)需求是就各種百度,但是發(fā)現(xiàn)基本都是用js實(shí)現(xiàn),而且兼容性還非常不好。
但是在尋覓和嘗試的過程中,發(fā)現(xiàn)只需要css代碼也可以完全實(shí)現(xiàn)的,對(duì)需要復(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í)意思就是不限制用戶對(duì)內(nèi)容的操作,不禁用系統(tǒng)默認(rèn)菜單,長(zhǎng)按會(huì)顯示系統(tǒng)自帶的復(fù)制功能進(jìn)行復(fù)制。
使用clipboard.js實(shí)現(xiàn)移動(dòng)端粘貼復(fù)制
clipboard.js是一款很強(qiáng)大的粘貼復(fù)制的插件,但是在移動(dòng)端使用,會(huì)出現(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)雅降級(jí):safari 版本號(hào)>=10,提示復(fù)制成功;否則提示需在文字選中后,手動(dòng)選擇“拷貝”進(jìn)行復(fù)制
clipboard.on('success', function(e) {
alert('復(fù)制成功!')
console.log($(this))
e.clearSelection();
});
clipboard.on('error', function(e) {
alert('請(qǐng)選擇“拷貝”進(jìn)行復(fù)制!')
});
})
注意我在保存要復(fù)制的內(nèi)容時(shí)使用的是input控件,而不是div或者span。因?yàn)椋跍y(cè)試時(shí)只有input的兼容性最好,不會(huì)出現(xiàn)問題,能夠保證正常復(fù)制。同時(shí),該插件也不支持safari 版本號(hào)<10,所以要做好提示。
總結(jié)
以上所述是小編給大家介紹的HTML5實(shí)現(xiàn)移動(dòng)端復(fù)制功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!