jquery 实现复制(ps:兼容各种端)

2019-03-30 14:49:05 浏览2224次 作者: 我是个宝宝

收藏

版权唯一所有人  --> 赵伟

<!DOCTYPE html>      
<html>      
<head>      
    <meta charset="UTF-8">      
    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>     
    <script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>      
    <script src="clipboard.js"></script>      
    <title>复制按钮</title>      
</head>      
<body>      
<span id="target">我是一段优美的文字</span>  
<button data-clipboard-action="copy" data-clipboard-target="#target" id="copy_btn">
    复制按钮
</button>
<button id="copy_btn" data-clipboard-text="我是一段优美的文字">复制按钮</button>
</body>
<script>      
    $(document).ready(function(){
        var clipboard = new Clipboard('#copy_btn');      
        clipboard.on('success', function(e) {
            alert("复制成功",1500);
            e.clearSelection();
            console.log(e.clearSelection);
        });
    });
</script>
</html>

js  插件   clipboard.js

/*!
 * clipboard.js v1.5.12
 * https://zenorocha.github.io/clipboard.js
 *
 * Licensed MIT © Zeno Rocha
 */
!
function (t) {
    if ("object" == typeof exports && "undefined" != typeof module) module.exports = t();
    else if ("function" == typeof define && define.amd) define([], t);
    else {
        var e;
        e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this,
        e.Clipboard = t()
    }
}(function () {
    var t, e, n;
    return function t(e, n, o) {
        function i(a, c) {
            if (!n[a]) {
                if (!e[a]) {
                    var s = "function" == typeof require && require;
                    if (!c && s) return s(a, !0);
                    if (r) return r(a, !0);
                    var l = new Error("Cannot find module '" + a + "'");
                    throw l.code = "MODULE_NOT_FOUND",
                    l
                }
                var u = n[a] = {
                    exports: {}
                };
                e[a][0].call(u.exports, function (t) {
                    var n = e[a][1][t];
                    return i(n ? n : t)
                }, u, u.exports, t, e, n, o)
            }
            return n[a].exports
        }
        for (var r = "function" == typeof require && require, a = 0; a < o.length; a++) i(o[a]);
        return i
    }({
        1: [function (t, e, n) {
            var o = t("matches-selector");
            e.exports = function (t, e, n) {
                for (var i = n ? t : t.parentNode; i && i !== document;) {
                    if (o(i, e)) return i;
                    i = i.parentNode
                }
            }
        },
        {
            "matches-selector": 5
        }],
        2: [function (t, e, n) {
            function o(t, e, n, o, r) {
                var a = i.apply(this, arguments);
                return t.addEventListener(n, a, r),
                {
                    destroy: function () {
                        t.removeEventListener(n, a, r)
                    }
                }
            }
            function i(t, e, n, o) {
                return function (n) {
                    n.delegateTarget = r(n.target, e, !0),
                    n.delegateTarget && o.call(t, n)
                }
            }
            var r = t("closest");
            e.exports = o
        },
        {
            closest: 1
        }],
        3: [function (t, e, n) {
            n.node = function (t) {
                return void 0 !== t && t instanceof HTMLElement && 1 === t.nodeType
            },
            n.nodeList = function (t) {
                var e = Object.prototype.toString.call(t);
                return void 0 !== t && ("[object NodeList]" === e || "[object HTMLCollection]" === e) && "length" in t && (0 === t.length || n.node(t[0]))
            },
            n.string = function (t) {
                return "string" == typeof t || t instanceof String
            },
            n.fn = function (t) {
                var e = Object.prototype.toString.call(t);
                return "[object Function]" === e
            }
        },
        {}],
        4: [function (t, e, n) {
            function o(t, e, n) {
                if (!t && !e && !n) throw new Error("Missing required arguments");
                if (!c.string(e)) throw new TypeError("Second argument must be a String");
                if (!c.fn(n)) throw new TypeError("Third argument must be a Function");
                if (c.node(t)) return i(t, e, n);
                if (c.nodeList(t)) return r(t, e, n);
                if (c.string(t)) return a(t, e, n);
                throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")
            }
            function i(t, e, n) {
                return t.addEventListener(e, n),
                {
                    destroy: function () {
                        t.removeEventListener(e, n)
                    }
                }
            }
            function r(t, e, n) {
                return Array.prototype.forEach.call(t, function (t) {
                    t.addEventListener(e, n)
                }),
                {
                    destroy: function () {
                        Array.prototype.forEach.call(t, function (t) {
                            t.removeEventListener(e, n)
                        })
                    }
                }
            }
            function a(t, e, n) {
                return s(document.body, t, e, n)
            }
            var c = t("./is"),
                s = t("delegate");
            e.exports = o
        },
        {
            "./is": 3,
            delegate: 2
        }],
        5: [function (t, e, n) {
            function o(t, e) {
                if (r) return r.call(t, e);
                for (var n = t.parentNode.querySelectorAll(e), o = 0; o < n.length; ++o) if (n[o] == t) return !0;
                return !1
            }
            var i = Element.prototype,
                r = i.matchesSelector || i.webkitMatchesSelector || i.mozMatchesSelector || i.msMatchesSelector || i.oMatchesSelector;
            e.exports = o
        },
        {}],
        6: [function (t, e, n) {
            function o(t) {
                var e;
                if ("INPUT" === t.nodeName || "TEXTAREA" === t.nodeName) t.focus(),
                t.setSelectionRange(0, t.value.length),
                e = t.value;
                else {
                    t.hasAttribute("contenteditable") && t.focus();
                    var n = window.getSelection(),
                        o = document.createRange();
                    o.selectNodeContents(t),
                    n.removeAllRanges(),
                    n.addRange(o),
                    e = n.toString()
                }
                return e
            }
            e.exports = o
        },
        {}],
        7: [function (t, e, n) {
            function o() {}
            o.prototype = {
                on: function (t, e, n) {
                    var o = this.e || (this.e = {});
                    return (o[t] || (o[t] = [])).push({
                        fn: e,
                        ctx: n
                    }),
                    this
                },
                once: function (t, e, n) {
                    function o() {
                        i.off(t, o),
                        e.apply(n, arguments)
                    }
                    var i = this;
                    return o._ = e,
                    this.on(t, o, n)
                },
                emit: function (t) {
                    var e = [].slice.call(arguments, 1),
                        n = ((this.e || (this.e = {}))[t] || []).slice(),
                        o = 0,
                        i = n.length;
                    for (o; i > o; o++) n[o].fn.apply(n[o].ctx, e);
                    return this
                },
                off: function (t, e) {
                    var n = this.e || (this.e = {}),
                        o = n[t],
                        i = [];
                    if (o && e) for (var r = 0, a = o.length; a > r; r++) o[r].fn !== e && o[r].fn._ !== e && i.push(o[r]);
                    return i.length ? n[t] = i : delete n[t],
                    this
                }
            },
            e.exports = o
        },
        {}],
        8: [function (e, n, o) {
            !
            function (i, r) {
                if ("function" == typeof t && t.amd) t(["module", "select"], r);
                else if ("undefined" != typeof o) r(n, e("select"));
                else {
                    var a = {
                        exports: {}
                    };
                    r(a, i.select),
                    i.clipboardAction = a.exports
                }
            }(this, function (t, e) {
                "use strict";

                function n(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                function o(t, e) {
                    if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                }
                var i = n(e),
                    r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ?
                function (t) {
                        return typeof t
                    } : function (t) {
                        return t && "function" == typeof Symbol && t.constructor === Symbol ? "symbol" : typeof t
                    },
                    a = function () {
                        function t(t, e) {
                            for (var n = 0; n < e.length; n++) {
                                var o = e[n];
                                o.enumerable = o.enumerable || !1,
                                o.configurable = !0,
                                "value" in o && (o.writable = !0),
                                Object.defineProperty(t, o.key, o)
                            }
                        }
                        return function (e, n, o) {
                            return n && t(e.prototype, n),
                            o && t(e, o),
                            e
                        }
                    }(),
                    c = function () {
                        function t(e) {
                            o(this, t),
                            this.resolveOptions(e),
                            this.initSelection()
                        }
                        return t.prototype.resolveOptions = function t() {
                            var e = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0];
                            this.action = e.action,
                            this.emitter = e.emitter,
                            this.target = e.target,
                            this.text = e.text,
                            this.trigger = e.trigger,
                            this.selectedText = ""
                        },
                        t.prototype.initSelection = function t() {
                            this.text ? this.selectFake() : this.target && this.selectTarget()
                        },
                        t.prototype.selectFake = function t() {
                            var e = this,
                                n = "rtl" == document.documentElement.getAttribute("dir");
                            this.removeFake(),
                            this.fakeHandlerCallback = function () {
                                    return e.removeFake()
                                },
                            this.fakeHandler = document.body.addEventListener("click", this.fakeHandlerCallback) || !0,
                            this.fakeElem = document.createElement("textarea"),
                            this.fakeElem.style.fontSize = "12pt",
                            this.fakeElem.style.border = "0",
                            this.fakeElem.style.padding = "0",
                            this.fakeElem.style.margin = "0",
                            this.fakeElem.style.position = "absolute",
                            this.fakeElem.style[n ? "right" : "left"] = "-9999px",
                            this.fakeElem.style.top = (window.pageYOffset || document.documentElement.scrollTop) + "px",
                            this.fakeElem.setAttribute("readonly", ""),
                            this.fakeElem.value = this.text,
                            document.body.appendChild(this.fakeElem),
                            this.selectedText = (0, i.
                            default)(this.fakeElem),
                            this.copyText()
                        },
                        t.prototype.removeFake = function t() {
                            this.fakeHandler && (document.body.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null),
                            this.fakeElem && (document.body.removeChild(this.fakeElem), this.fakeElem = null)
                        },
                        t.prototype.selectTarget = function t() {
                            this.selectedText = (0, i.
                        default)(this.target),
                            this.copyText()
                        },
                        t.prototype.copyText = function t() {
                            var e = void 0;
                            try {
                                e = document.execCommand(this.action)
                            } catch (n) {
                                e = !1
                            }
                            this.handleResult(e)
                        },
                        t.prototype.handleResult = function t(e) {
                            e ? this.emitter.emit("success", {
                                action: this.action,
                                text: this.selectedText,
                                trigger: this.trigger,
                                clearSelection: this.clearSelection.bind(this)
                            }) : this.emitter.emit("error", {
                                action: this.action,
                                trigger: this.trigger,
                                clearSelection: this.clearSelection.bind(this)
                            })
                        },
                        t.prototype.clearSelection = function t() {
                            this.target && this.target.blur(),
                            window.getSelection().removeAllRanges()
                        },
                        t.prototype.destroy = function t() {
                            this.removeFake()
                        },
                        a(t, [{
                            key: "action",
                            set: function t() {
                                var e = arguments.length <= 0 || void 0 === arguments[0] ? "copy" : arguments[0];
                                if (this._action = e, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"')
                            },
                            get: function t() {
                                return this._action
                            }
                        },
                        {
                            key: "target",
                            set: function t(e) {
                                if (void 0 !== e) {
                                    if (!e || "object" !== ("undefined" == typeof e ? "undefined" : r(e)) || 1 !== e.nodeType) throw new Error('Invalid "target" value, use a valid Element');
                                    if ("copy" === this.action && e.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
                                    if ("cut" === this.action && (e.hasAttribute("readonly") || e.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
                                    this._target = e
                                }
                            },
                            get: function t() {
                                return this._target
                            }
                        }]),
                        t
                    }();
                t.exports = c
            })
        },
        {
            select: 6
        }],
        9: [function (e, n, o) {
            !
            function (i, r) {
                if ("function" == typeof t && t.amd) t(["module", "./clipboard-action", "tiny-emitter", "good-listener"], r);
                else if ("undefined" != typeof o) r(n, e("./clipboard-action"), e("tiny-emitter"), e("good-listener"));
                else {
                    var a = {
                        exports: {}
                    };
                    r(a, i.clipboardAction, i.tinyEmitter, i.goodListener),
                    i.clipboard = a.exports
                }
            }(this, function (t, e, n, o) {
                "use strict";

                function i(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                function r(t, e) {
                    if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                }
                function a(t, e) {
                    if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                    return !e || "object" != typeof e && "function" != typeof e ? t : e
                }
                function c(t, e) {
                    if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                    t.prototype = Object.create(e && e.prototype, {
                        constructor: {
                            value: t,
                            enumerable: !1,
                            writable: !0,
                            configurable: !0
                        }
                    }),
                    e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                }
                fu						
					

当您发现内容错误或代码bug,以及下载链接无法使用等,请点击屏幕右下角的上报错误来进行提交,我们会尽快修正。
本程序所有源码和工具完全免费,当本网站内容如果侵犯了您的权益,请联系我们,我们会尽快处理,感谢您的合作。

收藏 分享

相关文章

评论:

文明上网理性发言,请遵守 新闻评论服务协议

当前还没有评论,快来评论吧

上报错误