Clipboard.js : 移動端瀏覽器實現網頁內容復制


最近在項目中遇到這樣一個需求:

 

點擊按鈕,將指定的URL復制到剪貼板,然后用戶可以粘貼到瀏覽器(Safari為主)自行打開。

 

方案一:zeroClipboard.js

 

 

github地址https://github.com/zeroclipboard/zeroclipboard

 

復制原理:zeroClipboard利用透明的 flash 覆蓋在復制按鈕上,點擊 flash,將復制內容傳入到 flash 中,再通過 flash 把傳入的內容寫到剪貼板上

 

首先想到這個插件的原因是,之前在PC端的項目中使用過,兼容性很好,駕輕就熟,所以,先用它做了個demo

HTML

<input type="text" name="" id="iUrl" value="https://github.com/zeroclipboard/zeroclipboard">
<button id="copyUrlBtn">復制鏈接</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('已復制');
	    }
	})();

 

使用zeroClipboard.js需要注意以下兩點:

1# ZeroClipboard.swf 和 ZeroClipboard.min.js 需在同一目錄結構下, ZeroClipboard.swf無需調用,只需在頁面中引用ZeroClipboard.min.js 即可;

2# 測試復制功能需在服務器環境,可以是簡單的本地服務器,如:http://localhost:8000/xx

 

測試結果:

在PC端瀏覽器上測試,功能正常;但是在ios上,無論是QQ瀏覽器,還是Safari瀏覽器都無法實現復制功能。

可能由於Flash技術正被各大瀏覽器廠商冷落,所以,截止到目前ZeroClipboard.js最新版,也無法實現在移動端瀏覽器進行文本復制。

 

方案二:Clipboard.js

 

 

 官網地址https://clipboardjs.com/

 

 兼容性:

 雖然要求Safari版本在10以上,但是作者做了很好的優雅降級:

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以上的,可以直接成功復制;如果是版本小於10,可以通過如下代碼提示用戶手動復制:

clipboard.on('error', function(e) {
    alert('請選擇“拷貝”進行復制!')
});

 

Safari版本在10以下的效果:

在 alert('請選擇“拷貝”進行復制!') 之后,待復制的文字會自動選中,然后彈出系統本身的tooltip 

效果如下:

 

 DEMO:

 

HTML:

   <!-- Target -->
    <input id="foo"  value="http://www.968309.com/mobile.php">

    <!-- Trigger -->
    <button class="btn" data-clipboard-target="#foo">復制</button>

 

JAVASCRIPT:

    //init
    var clipboard = new Clipboard('.btn');
    //優雅降級:safari 版本號>=10,提示復制成功;否則提示需在文字選中后,手動選擇“拷貝”進行復制
    clipboard.on('success', function(e) {
        alert('復制成功!')
        e.clearSelection();
    });
    clipboard.on('error', function(e) {
        alert('請選擇“拷貝”進行復制!')
    });

  

 

 2017/08/25 后續補充:

 

近期很多朋友通過留言和郵件詢問我,為什么在安卓手機上無法使用Clipboard.js來實現復制?

其實按照本文demo說明,是完全可以的;

只是很多朋友沒有沒有把待復制內容放在input輸入框里,才導致在安卓手機上無法復制。

 

錯誤寫法:

<p id="foo">這里是需要復制的文本</p>

  

正確寫法:

<input type="text" id="foo" value="這里是需要復制的文本"/>

 

 

 2018/05/14  更新:我的小程序【陽光投票】已上線,歡迎大家體驗建議!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM