項目需求:移動端添加按鈕功能選擇要復制的鏈接在其他地方時用:
調研了下
function initcopyContent() {
var _btn = $(".copy-button");
_btn.on('click',function () {
var _this = $(this);
_this.prev().select();
document.execCommand("Copy");
})
}
initcopyContent();
鏈接在input內 點擊按鈕 獲取值復制,說是這種方法只用於ie瀏覽器,但是在移動端(andord)分別測試了UC、QQ、和微信瀏覽器是可以使用的(有興趣的可以試下),還有個但是ios是不行的。
最后只能用插件,有幾款可以使用的插件:
ZeroClipboard 使用flash優雅降級 果斷放棄
Clipboard 比較好 很輕量 項目中就一個頁面使用這個功能 兼容性還可以(一些低版本Safari瀏覽器不行)
最后決定使用它,從GitHub下載代碼放到服務器,引入調用,添加功能,OK
有些坑:
教程都是只給一個按鈕添加事件(繼承),我用到了四個按鈕,覺得寫4次不太可能,以為這四個按鈕的鏈接都是php循環渲染出來的所以只能動態的添加,官網有類似的教程:"
通常,我們需要提取與您的選擇器相匹配的所有元素,並為每一個綁定事件偵聽器。但是如果你匹配了上百個元素,這個操作會消耗大量的內存。
因為這個原因,我們使用 event delegation ,這樣僅需使用一個事件監聽就可以代替上面說的上百個事件監聽。 查看: #perfmatters."
但是鏈接不能用所以只能:
var num = 1;
$(".copy-button").each(function () {
var clipboard = {};
clipboard[num] = new Clipboard('.copy-button' + num);
clipboard[num].on('success', function(e) {
$.dialog.successTips('復制成功!');
e.clearSelection();
});
clipboard[num].on('error', function(e) {
$.dialog.successTips('請選擇“拷貝”進行復制!');
});
num ++;
})
比較low的方法弄了(本身是很不想寫這個功能這是有多懶非得需要個按鈕很煩,按鈕也不是很多就這樣寫了,頁面加載內容不是很多就這樣了,可以優化)
還有個就是兼容問題5s自帶的瀏覽器不支持 6s沒問題,別的也沒測我又不是測試(呵呵,會被打死!)
對了還有就是ios選擇后沒有交互效果,在pc 和 android 是有交互效果的(類似選中狀態)ios缺沒有就給添加了個提示(封裝好的$.dialog提示)