Clipboard.js : 移動(dòng)端復(fù)制到粘貼板兼容問題

最近在項(xiàng)目中遇到這樣一個(gè)需求:
點(diǎn)擊按鈕,將指定的URL/字符串 復(fù)制到剪貼板买羞,然后用戶可以粘貼到其他地方雹食。

方案一:zeroClipboard.js

github地址https://github.com/zeroclipboard/zeroclipboard
復(fù)制原理:zeroClipboard利用透明的 flash 覆蓋在復(fù)制按鈕上,點(diǎn)擊 flash群叶,將復(fù)制內(nèi)容傳入到 flash 中街立,再通過 flash 把傳入的內(nèi)容寫到剪貼板上
首先想到這個(gè)插件的原因是,之前在PC端的項(xiàng)目中使用過赎离,兼容性很好,駕輕就熟梁剔,所以憾朴,先用它做了個(gè)demo
HTML

<input type="text" name="" id="iUrl" value="https://github.com/zeroclipboard/zeroclipboard">
<button id="copyUrlBtn">復(fù)制鏈接</button>

JAVASCRIPT

(function(){
        var btn = document.getElementById('copyUrlBtn'),
        text = document.getElementById('iUrl'),
        zc = new ZeroClipboard(btn);
    zc.on('beforecopy', function(e){
        zc.setText(text.value);
    });
    btn.onclick = function(){
        alert('已復(fù)制');
    }
})();

使用zeroClipboard.js需要注意以下兩點(diǎn):

1# ZeroClipboard.swf 和 ZeroClipboard.min.js 需在同一目錄結(jié)構(gòu)下, ZeroClipboard.swf無(wú)需調(diào)用灸拍,只需在頁(yè)面中引用ZeroClipboard.min.js 即可;
2# 測(cè)試復(fù)制功能需在服務(wù)器環(huán)境,可以是簡(jiǎn)單的本地服務(wù)器鸡岗,如:http://localhost:8000/xx

測(cè)試結(jié)果:

在PC端瀏覽器上測(cè)試,功能正常声登;但是在ios上,無(wú)論是QQ瀏覽器揣苏,還是Safari瀏覽器都無(wú)法實(shí)現(xiàn)復(fù)制功能。

可能由于Flash技術(shù)正被各大瀏覽器廠商冷落卸察,所以,截止到目前ZeroClipboard.js最新版合武,也無(wú)法實(shí)現(xiàn)在移動(dòng)端瀏覽器進(jìn)行文本復(fù)制涡扼。

方案二:Clipboard.js

** 官網(wǎng)地址**:https://clipboardjs.com/

兼容的版本

雖然要求Safari版本在10以上,但是作者做了很好的優(yōu)雅降級(jí):

The good news is that clipboard.js gracefully degrades if you need to support older browsers. All you have to do is show a tooltip saying Copied! when success event is called and Press Ctrl+C to copy when error event is called because the text is already selected.

也就是說吃沪,Safari版本是10以上的汤善,可以直接成功復(fù)制;如果是版本小于10巷波,可以通過如下代碼提示用戶手動(dòng)復(fù)制:

clipboard.on('error', function(e) {
    alert('請(qǐng)選擇“拷貝”進(jìn)行復(fù)制!')
});

Safari版本在10以下的效果:

在 alert('請(qǐng)選擇“拷貝”進(jìn)行復(fù)制!') 之后萎津,待復(fù)制的文字會(huì)自動(dòng)選中卸伞,然后彈出系統(tǒng)本身的tooltip

效果如下:

點(diǎn)擊第二次復(fù)制按鈕才出現(xiàn)上方工具欄

demo:

//ClipboardJS.isSupported()  //--------這句為:是否兼容
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ù)制成功!')
    e.clearSelection();
});
clipboard.on('error', function(e) {
    alert('請(qǐng)選擇“拷貝”進(jìn)行復(fù)制!')
//嘗試去掉alert,能彈出系統(tǒng)的“拷貝”工具荤傲,但是需要點(diǎn)擊兩次按鈕才能彈出垮耳,具體原因還不清楚,參考上圖遂黍。有人說可以試一下在觸發(fā)的地方寫一個(gè)空點(diǎn)擊事件, onclick="" 因?yàn)閕os不單純支持on事件
});

注:參考jq在ios的on事件失效
https://blog.csdn.net/qq_21119773/article/details/53996514

在ios的瀏覽器中出現(xiàn)一下情況:
綁定document终佛,on事件失效
$(document).on('click','#weixin_btn,#close_box',function(){

})

解決方法1铃彰,最后加一行代碼牙捉,如下
$("body").children().click(function(){})
-============------++++++++++++

解決方法2邪铲,
綁定到id(非document)上带到,on正常使用

$("#orderlist").on('click','.pingjia',function(e){
e.stopPropagation();
e.preventDefault();

})
+++++++++++ 個(gè)人參考 ++++++++++++++++++

 <script type="text/javascript">
    //復(fù)制
    var clipboard = new ClipboardJS('#btnClipboard', {
        target: function() { return document.getElementById('spnYXDHXAccno');}
    });
    clipboard.on('success', function(e) { NotyGenerate("success", "bottomCenter", "1500", "復(fù)制成功揽惹!"); });
    clipboard.on('error', function(e) {  });

    $('.panel-warning').find('li').on('click',function() {
        var _this = $(this).index();
        $(this).addClass('panel-table').siblings().removeClass('panel-table');
        $('.panel-cons').find('.panel-con').eq(_this).fadeIn(100).siblings().fadeOut(100);
    });
</script>
<script type="text/javascript">
    $(document).ready(function () {
        //讀取瀏覽器信息
        nBrowserType = 5; //其它瀏覽器
        if (IsIphoneOS()) {
            nBrowserType = 2; //Iphone 瀏覽器
            if (IsWeiXin()) nBrowserType = 1; //Iphone 微信瀏覽器
        }
        else if (IsAndroid()) {
            nBrowserType = 4; //Android 瀏覽器
            if (IsWeiXin()) nBrowserType = 3; //Android 微信瀏覽器
        }
        $("#hfBrowserType").val(nBrowserType);
        $("#hfBrowserValue").val(navigator.userAgent.toLowerCase());
    });

    $('#btnSubmit').click(function () { return jForm_Check(); });
    function jForm_Check() {
         if (!/^([1-9][\d]{0,7}|0)(\.[\d]{1,2})?$/.test($("#tbMoney").val())) {
            NotyGenerate("warning", "bottomCenter", "1500", "請(qǐng)輸入正確的金額锹漱!");
            $("#tbMoney").trigger("select");
            return false;
        }
        if (Number($("#tbMoney").val()) <= 0) {
            NotyGenerate("warning", "bottomCenter", "1500", "請(qǐng)輸入大于 0 的金額哥牍!");
            $("#tbMoney").trigger("select");
            return false;
        }
    }
</script>

參考鏈接:
1.官方https://clipboardjs.com/(我使用火狐瀏覽器打開快點(diǎn)---添加了Decentraleyes這個(gè)組件)
2.https://blog.csdn.net/oaa608868/article/details/53539890
3.https://www.huoduan.com/clipboardjs.html
4.https://blog.csdn.net/ximenxiafeng/article/details/54632496
5.https://blog.csdn.net/hzmumu/article/details/79271464
6.http://www.reibang.com/p/3f8867de041e(中的評(píng)論:對(duì)于不兼容ios的, 可以試一下在觸發(fā)的地方寫一個(gè)空點(diǎn)擊事件, onclick="" 因?yàn)閕os不單純支持on事件)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末澡谭,一起剝皮案震驚了整個(gè)濱河市蛙奖,隨后出現(xiàn)的幾起案子雁仲,更是在濱河造成了極大的恐慌攒砖,老刑警劉巖日裙,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件受神,死亡現(xiàn)場(chǎng)離奇詭異鼻听,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓢宦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)廉嚼,“玉大人怠噪,你說我怎么就攤上這事〗靡模” “怎么了双藕?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)近范。 經(jīng)常有香客問我评矩,道長(zhǎng),這世上最難降的妖魔是什么蹂空? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮弱恒,結(jié)果婚禮上返弹,老公的妹妹穿的比我還像新娘。我一直安慰自己拉背,他們只是感情好椅棺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布两疚。 她就那樣靜靜地躺著诱渤,像睡著了一般勺美。 火紅的嫁衣襯著肌膚如雪励烦。 梳的紋絲不亂的頭發(fā)上坛掠,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天屉栓,我揣著相機(jī)與錄音友多,去河邊找鬼域滥。 笑死启绰,一個(gè)胖子當(dāng)著我的面吹牛委可,可吹牛的內(nèi)容都是我干的着倾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蒿囤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蟋软!你這毒婦竟也來(lái)了岳守?” 一聲冷哼從身側(cè)響起湿痢,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎罐氨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體塔嬉,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谨究,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸯屿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寄摆。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屈藐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搓扯,到底是詐尸還是另有隱情铅歼,我是刑警寧澤椎椰,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布慨飘,位于F島的核電站瓤的,受9級(jí)特大地震影響圈膏,放射性物質(zhì)發(fā)生泄漏稽坤。R本人自食惡果不足惜慎皱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望天揖。 院中可真熱鬧今膊,春花似錦斑唬、人聲如沸恕刘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斟赚。三九已至汁展,卻和暖如春食绿,著一層夾襖步出監(jiān)牢的瞬間器紧,已是汗流浹背铲汪。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留张吉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像省核,于是被迫代替她去往敵國(guó)和親气忠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容