🔥🔥🔥文本选中复制🔥🔥🔥

解除网站不允许复制的限制,文本选中后点击复制按钮即可复制,主要用于 百度文库 道客巴巴 无忧考网 学习啦 蓬勃范文 思否社区 力扣 知乎 语雀 等

As of 25/09/2022. See the latest version.

// ==UserScript==
// @name        🔥🔥🔥文本选中复制🔥🔥🔥
// @description 解除网站不允许复制的限制,文本选中后点击复制按钮即可复制,主要用于 百度文库 道客巴巴 无忧考网 学习啦 蓬勃范文 思否社区 力扣 知乎 语雀 等
// @namespace   https://github.com/WindrunnerMax/TKScript
// @version     6.0.1
// @author      Czy
// @match       *://wenku.baidu.com/view/*
// @match       *://wenku.baidu.com/share/*
// @match       *://wenku.baidu.com/link*
// @match       *://wenku.baidu.com/ndPureView/*
// @match       *://www.51test.net/show/*
// @match       *://www.xuexi.la/*
// @match       *://www.xuexila.com/*
// @match       *://www.cspengbo.com/*
// @match       *://*.doc88.com/*
// @match       *://segmentfault.com/*
// @match       *://wk.baidu.com/view/*
// @match       *://leetcode-cn.com/problems/*
// @match       *://www.zhihu.com/*
// @match       *://z.30edu.com.cn/*
// @match       *://docs.qq.com/doc/*
// @match       *://boke112.com/post/*
// @match       *://www.yuque.com/*
// @match       *://www.commandlinux.com/*
// @match       *://*.diyifanwen.com/*
// @match       *://*.mbalib.com/*
// @match       *://*.cnitpm.com/*
// @match       *://bbs.mihoyo.com/ys/*
// @match       *://*.ruiwen.com/*
// @match       *://www.uemeds.cn/*
// @match       *://www.oh100.com/*
// @match       *://www.aiyuke.com/news/*
// @match       *://www.fwsir.com/*
// @match       *://www.wenxm.cn/*
// @match       *://www.unjs.com/*
// @match       *://www.ahsrst.cn/*
// @match       *://*.yjbys.com/*
// @match       *://*.qidian.com/*
// @match       *://*.zongheng.com/*
// @match       *://*.17k.com/*
// @match       *://*.ciweimao.com/*
// @match       *://book.qq.com/*
// @match       *://*.360doc.com/content/*
// @match       *://*.850500.com/news/*
// @match       *://utaten.com/lyric/*
// @match       *://*.jianbiaoku.com/*
// @match       *://*.kt250.com/*
// @match       *://www.kejudati.com/*
// @match       *://*.xiaohongshu.com/discovery/*
// @match       *://*.baibeike.com/*
// @match       *://*.blog.csdn.net/*
// @match       *://*.bilibili.com/read/*
// @match       *://*.cnki.net/KXReader/*
// @match       *://*.cnrencai.com/*
// @match       *://*.kodiplayer.cn/*
// @match       *://tongxiehui.net/*
// @match       *://*.jianshu.com/p/*
// @match       *://*.linovelib.com/novel/*
// @match       *://*.wjx.cn/*
// @match       *://*.wjx.top/*
// @match       *://*.chazidian.com/*
// @match       *://*.juejin.cn/post/*
// @match       *://*.zgbk.com/ecph/*
// @match       *://*.wenmi.com/article/*
// @match       *://yuedu.baidu.com/*
// @match       *://www.inrrp.com.cn/*
// @match       *://fanyi.baidu.com/mtpe/*
// @match       *://www.shubaoc.com/*
// @match       *://blog.51cto.com/*
// @match       *://www.ximalaya.com/*
// @match       *://*.tianqi.com/*
// @supportURL  https://github.com/WindrunnerMax/TKScript/issues
// @license     GPL License
// @run-at      document-start
// @connect     res3.doc88.com
// @grant       unsafeWindow
// @grant       GM_xmlhttpRequest
// ==/UserScript==
(function () {
    'use strict';

    var css_248z$1 = ".__copy-button{align-items:center;background:#4c98f7;border-radius:3px;color:#fff;cursor:pointer;display:flex;font-size:13px;height:30px;justify-content:center;opacity:0;position:absolute;transition:opacity .3s;width:60px;z-index:-1000}";

    var css_248z = "#select-tooltip,#sfModal,.modal-backdrop,div[id^=reader-helper]{display:none!important}.modal-open{overflow:auto!important}._sf_adjust_body{padding-right:0!important}";

    var DOM_STAGE = {
        START: "document-start",
        END: "document-end",
    };
    var DOM_READY = "DOMContentLoaded";
    var PAGE_LOADED = "load";
    var COPY = "copy";
    var SELECT_START = "selectstart";
    var CONTEXT_MENU = "contextmenu";
    var KEY_DOWN = "keydown";

    var opt = Object.prototype.toString;
    function isString(value) {
        return opt.call(value) === "[object String]";
    }

    var dom$1 = {
        query: function (selector) {
            return document.querySelector(selector);
        },
        attr: function (selector, attr, value) {
            var dom = document.querySelector(selector);
            dom && dom.setAttribute(attr, value);
        },
        append: function (selector, content) {
            var container = document.createElement("div");
            if (isString(content)) {
                container.innerHTML = content;
            }
            else {
                container.appendChild(content);
            }
            var targetDOM = document.querySelector(selector);
            targetDOM && targetDOM.append(container);
            return container;
        },
        remove: function (selector) {
            var targetDOM = document.querySelector(selector);
            targetDOM && targetDOM.remove();
        },
    };

    var initBaseEvent = function (websiteConfig) {
        document.addEventListener(DOM_READY, function () {
            if (websiteConfig.initCopyEvent) {
                document.oncopy = function (e) { return e.stopPropagation(); };
                document.body.oncopy = function (e) { return e.stopPropagation(); };
                document.addEventListener(COPY, function (e) { return e.stopPropagation(); });
                document.body.addEventListener(COPY, function (e) { return e.stopPropagation(); });
            }
        });
    };
    var initBaseStyle = function () {
        document.addEventListener(DOM_READY, function () {
            dom$1.append("head", "<style>".concat(css_248z$1, "</style>"));
            dom$1.append("head", "<style>".concat(css_248z, "</style>"));
        });
    };

    /**
     * 外部引用`static.doc88.com`声明
     * 此部分是在处理`doc88.com`才会加载的资源文件,此资源文件由该网站加载时提供
     */
    var path = "";
    var website$q = {
        regexp: /.*doc88\.com\/.+/,
        init: function () {
            // GM_xmlhttpRequest({
            //     method: "GET",
            //     url: "https://res.doc88.com/assets/js/v2.js",
            //     onload: function(response) {
            //         var view = new Function("var view = " + response.responseText.replace("eval", "") + "; return view;");
            //         path = /<textarea[\s\S]*?Viewer.([\S]*?)\+[\S]*?\/textarea>/.exec(view())[1];
            //     }
            // })
            dom$1.append("body", "<style id=\"copy-element-hide\">#left-menu{display: none !important;}</style>");
            GM_xmlhttpRequest({
                method: "GET",
                url: "https://res3.doc88.com/resources/js/modules/main-v2.min.js?v=2.56",
                onload: function (response) {
                    var result = /\("#cp_textarea"\).val\(([\S]*?)\);/.exec(response.responseText);
                    if (result)
                        path = result[1];
                },
            });
            window.addEventListener("load", function () {
                var cpFn = unsafeWindow.copyText.toString();
                var fnResult = /<textarea[\s\S]*?>'\+([\S]*?)\+"<\/textarea>/.exec(cpFn);
                if (fnResult)
                    path = fnResult[1];
            });
        },
        getSelectedText: function () {
            var select = unsafeWindow;
            path.split(".").forEach(function (v) {
                select = select[v];
            });
            if (!select) {
                unsafeWindow.Config.vip = 1;
                unsafeWindow.Config.logined = 1;
                dom$1.remove("#copy-element-hide");
            }
            return select;
        },
    };

    var website$p = {
        regexp: /.*segmentfault\.com\/.+/,
        init: function () {
            var body = dom$1.query("body");
            body.classList.add("_sf_adjust_body");
            body.onclick = function () {
                body.style.paddingRight = "0";
            };
        },
    };

    var TEXT_PLAIN = "text/plain";
    var TEXT_HTML = "text/html";
    var downgradeCopy = function (text) {
        var textarea = document.createElement("textarea");
        textarea.style.position = "fixed";
        textarea.style.left = "-999px";
        textarea.style.top = "-999px";
        textarea.value = text;
        document.body.appendChild(textarea);
        textarea.select();
        document.execCommand("copy");
        document.body.removeChild(textarea);
    };
    var isEmptyContent = function (data) {
        return isString(data) ? !data : !data[TEXT_PLAIN];
    };
    var copy = function (data) {
        var _a;
        var params = isString(data) ? (_a = {}, _a[TEXT_PLAIN] = data, _a) : data;
        var plainText = params[TEXT_PLAIN];
        if (!plainText)
            return false;
        if (navigator.clipboard) {
            var dataItems = {};
            for (var _i = 0, _b = Object.entries(params); _i < _b.length; _i++) {
                var _c = _b[_i], key = _c[0], value = _c[1];
                var blob = new Blob([value], { type: key });
                dataItems[key] = blob;
            }
            navigator.clipboard.write([new ClipboardItem(dataItems)]).catch(function () {
                downgradeCopy(plainText);
            });
        }
        else {
            downgradeCopy(plainText);
        }
        return true;
    };

    var dom = null;
    var isReadyToHidden = false;
    var instance = {
        id: "__copy",
        className: "__copy-button",
        getInstance: function () {
            if (dom === null) {
                var container = document.createElement("div");
                container.id = this.id;
                container.className = this.className;
                container.innerText = "复制";
                container.onmousedown = function (event) { return event.stopPropagation(); };
                container.onmouseup = function (event) { return event.stopPropagation(); };
                dom = container;
                document.body.appendChild(dom);
            }
            return dom;
        },
        show: function (event) {
            if (isReadyToHidden)
                return void 0;
            var dom = this.getInstance();
            dom.style.left = "".concat(event.pageX + 30, "px");
            dom.style.top = "".concat(event.pageY, "px");
            dom.style.opacity = "1";
            dom.style.zIndex = "1000";
        },
        hide: function () {
            var dom = this.getInstance();
            dom.style.opacity = "0";
            isReadyToHidden = true;
            setTimeout(function () {
                dom.style.zIndex = "-10000";
                isReadyToHidden = false;
            }, 350);
        },
        onCopy: function (content, event) {
            var _this = this;
            var dom = this.getInstance();
            this.show(event);
            dom.onclick = function () {
                copy(content);
                _this.hide();
            };
        },
        enable: function () {
            var dom = this.getInstance();
            dom.style.display = "flex";
        },
        disable: function () {
            var dom = this.getInstance();
            dom.style.display = "none";
        },
    };

    var stopNativePropagation = function (event) {
        // event.stopImmediatePropagation(); // 即停且阻止该元素在此事件绑定之后的`on`同类事件触发
        event.stopPropagation(); // 阻止该元素继续冒泡后的`on`同类事件触发
    };
    var utils = {
        hideButton: function () {
            instance.disable();
        },
        showButton: function () {
            instance.enable();
        },
        removeAttributes: function (selector, attr) {
            if (attr === void 0) { attr = []; }
            var dom = isString(selector) ? document.querySelector(selector) : selector;
            dom && attr.forEach(function (item) { return dom.removeAttribute(item); });
        },
        enableUserSelectByCSS: function () {
            var css = "*{user-select: auto !important;-webkit-user-select: auto !important;}";
            var style = document.createElement("style");
            style.innerText = css;
            var head = document.getElementsByTagName("head")[0];
            if (head) {
                head.appendChild(style);
            }
            else {
                window.addEventListener(PAGE_LOADED, function () {
                    return document.getElementsByTagName("head")[0].appendChild(style);
                });
            }
        },
        enableOnSelectStart: function (selector) {
            var dom = document.querySelector(selector);
            dom && dom.addEventListener(SELECT_START, stopNativePropagation);
        },
        enableOnContextMenu: function (selector) {
            var dom = document.querySelector(selector);
            dom && dom.addEventListener(CONTEXT_MENU, stopNativePropagation);
        },
        enableOnCopy: function (selector) {
            var dom = document.querySelector(selector);
            dom && dom.addEventListener(COPY, stopNativePropagation);
        },
        enableOnKeyDown: function (selector) {
            var dom = document.querySelector(selector);
            dom &&
                dom.addEventListener(KEY_DOWN, function (e) {
                    if (e.key === "c" && e.ctrlKey)
                        return e.stopPropagation();
                });
        },
        enableOnSelectStartByCapture: function () {
            window.addEventListener(SELECT_START, stopNativePropagation, true);
            document.addEventListener(SELECT_START, stopNativePropagation, true);
        },
        enableOnContextMenuByCapture: function () {
            window.addEventListener(CONTEXT_MENU, stopNativePropagation, true);
            document.addEventListener(CONTEXT_MENU, stopNativePropagation, true);
        },
        enableOnCopyByCapture: function () {
            window.addEventListener("copy", stopNativePropagation, true);
            document.addEventListener("copy", stopNativePropagation, true);
        },
        enableOnKeyDownByCapture: function () {
            document.addEventListener(KEY_DOWN, function (e) { return e.ctrlKey && e.key.toLocaleUpperCase() === "C" && e.stopPropagation(); }, true);
        },
    };

    var website$o = {
        regexp: /.*wk\.baidu\.com\/view\/.+/,
        init: function () {
            utils.hideButton();
            utils.enableOnSelectStartByCapture();
            window.onload = function () {
                dom$1.attr(".sf-edu-wenku-vw-container", "style", "");
            };
        },
    };

    var website$n = {
        regexp: /.*zhihu\.com\/.*/,
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
            utils.enableOnCopyByCapture();
        },
    };

    var website$m = {
        regexp: /.*30edu\.com\.cn\/.+/,
        init: function () {
            window.onload = function () {
                var iframes = document.getElementsByTagName("iframe");
                if (iframes.length === 2) {
                    var body = iframes[1].contentWindow.document.querySelector("body");
                    utils.removeAttributes(body, ["oncopy", "oncontextmenu", "onselectstart"]);
                }
            };
        },
    };

    var website$l = {
        regexp: /.*docs\.qq\.com\/.+/,
        config: {
            initCopyEvent: false,
        },
        init: function () {
            window.onload = function () {
                utils.hideButton();
            };
        },
        getSelectedText: function () {
            var _a;
            if (unsafeWindow.pad && unsafeWindow.pad.editor && !unsafeWindow.pad.editor.isCopyable()) {
                utils.showButton();
                var editor = unsafeWindow.pad.editor;
                editor._docEnv.copyable = true;
                editor.clipboardManager.copy();
                var plainText = editor.clipboardManager.customClipboard.plain;
                var htmlText = editor.clipboardManager.customClipboard.html;
                editor._docEnv.copyable = false;
                return _a = {},
                    _a[TEXT_PLAIN] = plainText,
                    _a[TEXT_HTML] = htmlText,
                    _a;
            }
            return "";
        },
    };

    var website$k = {
        regexp: new RegExp(".+://boke112.com/post/.+"),
        init: function () {
            utils.enableOnCopyByCapture();
            var template = "\n            <style>\n                :not(input):not(textarea)::selection {\n                    background-color: #2440B3 !important;\n                    color: #fff !important;\n                }\n\n                :not(input):not(textarea)::-moz-selection {\n                    background-color: #2440B3 !important;\n                    color: #fff !important;\n                }\n            </style>\n        ";
            dom$1.append("head", template);
        },
    };

    var website$j = {
        regexp: /diyifanwen/,
        init: function () {
            utils.hideButton();
            utils.enableOnCopyByCapture();
            utils.enableOnKeyDownByCapture();
        },
    };

    var website$i = {
        regexp: /mbalib/,
        init: function () {
            window.onload = function () {
                utils.removeAttributes("fullScreenContainer", [
                    "oncopy",
                    "oncontextmenu",
                    "onselectstart",
                ]);
            };
        },
    };

    var website$h = {
        regexp: /cnitpm/,
        init: function () {
            utils.hideButton();
            window.onload = function () {
                utils.removeAttributes("body", ["oncopy", "oncontextmenu", "onselectstart"]);
            };
        },
    };

    var website$g = {
        regexp: new RegExp(".+bbs.mihoyo.com/.+"),
        init: function () {
            utils.hideButton();
            utils.enableOnCopyByCapture();
            utils.enableOnSelectStartByCapture();
            utils.enableUserSelectByCSS();
        },
    };

    var website$f = {
        regexp: new RegExp(".+www.uemeds.cn/.+"),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
        },
    };

    var website$e = {
        regexp: new RegExp(".+aiyuke.com/news/.+"),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
        },
    };

    var website$d = {
        regexp: new RegExp("qidian"),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
            utils.enableOnCopy(".main-read-container");
            utils.enableOnContextMenu(".main-read-container");
        },
    };

    var website$c = {
        regexp: new RegExp("zongheng"),
        init: function () {
            utils.removeAttributes(".reader_box", ["style", "unselectable", "onselectstart"]);
            utils.removeAttributes(".reader_main", ["style", "unselectable", "onselectstart"]);
            utils.hideButton();
            utils.enableOnKeyDown("body");
            utils.enableUserSelectByCSS();
            utils.enableOnCopy(".content");
            utils.enableOnContextMenu("body");
            utils.enableOnSelectStart(".content");
        },
    };

    var website$b = {
        regexp: new RegExp("17k"),
        init: function () {
            utils.hideButton();
            utils.enableOnCopy(".readAreaBox .p");
        },
    };

    var website$a = {
        regexp: new RegExp("ciweimao"),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
            utils.enableOnCopy("#J_BookCnt");
            utils.enableOnContextMenu("body");
            utils.enableOnSelectStart("#J_BookCnt");
        },
    };

    var website$9 = {
        regexp: new RegExp("book\\.qq"),
        init: function () {
            utils.hideButton();
            utils.enableOnCopy("body");
            utils.enableUserSelectByCSS();
            utils.enableOnContextMenu("body");
            utils.enableOnSelectStart("body");
        },
    };

    var website$8 = {
        regexp: new RegExp("utaten"),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
            utils.enableOnSelectStartByCapture();
        },
    };

    var website$7 = {
        config: {
            runAt: "document-start",
        },
        regexp: new RegExp("wenku.baidu.com/(view|link).*"),
        init: function () {
            dom$1.append("head", "<style>@media print { body{ display:block; } }</style>");
            var canvasDataGroup = [];
            var originObject = {
                context2DPrototype: unsafeWindow.document.createElement("canvas").getContext("2d")
                    .__proto__,
            };
            document.createElement = new Proxy(document.createElement, {
                apply: function (target, thisArg, argumentsList) {
                    var element = Reflect.apply(target, thisArg, argumentsList);
                    if (argumentsList[0] === "canvas") {
                        var tmpData_1 = {
                            canvas: element,
                            data: [],
                        };
                        element.getContext("2d").fillText = function () {
                            var args = [];
                            for (var _i = 0; _i < arguments.length; _i++) {
                                args[_i] = arguments[_i];
                            }
                            tmpData_1.data.push(args);
                            originObject.context2DPrototype.fillText.apply(this, args);
                        };
                        canvasDataGroup.push(tmpData_1);
                    }
                    return element;
                },
            });
            var pageData = {};
            Object.defineProperty(unsafeWindow, "pageData", {
                set: function (v) { return (pageData = v); },
                get: function () {
                    if (!pageData.vipInfo)
                        return (pageData.vipInfo = {});
                    pageData.vipInfo.global_svip_status = 1;
                    pageData.vipInfo.global_vip_status = 1;
                    pageData.vipInfo.isVip = 1;
                    pageData.vipInfo.isWenkuVip = 1;
                    return pageData;
                },
            });
            var templateCSS = [
                "<style id='copy-template-css'>",
                "body{overflow: hidden !important}",
                "#copy-template-html{position: fixed; top: 0; right: 0; bottom: 0; left: 0; display: flex; align-items: center; justify-content: center;z-index: 999999; background: rgba(0,0,0,0.5);}",
                "#copy-template-html > .template-container{height: 80%; width: 80%; background: #fff; }",
                ".template-container > .title-container{display: flex; align-items: center; justify-content: space-between;padding: 10px;border-bottom: 1px solid #eee;}",
                "#copy-template-text{height: 100%; width: 100%;position: relative; overflow: auto;background: #fff;}",
                "#copy-template-html #template-close{cursor: pointer;}",
                "</style>",
            ].join("");
            var render = function () {
                canvasDataGroup = canvasDataGroup.filter(function (item) { return item.canvas.id; });
                var templateText = canvasDataGroup.map(function (canvasData, index) {
                    var computedTop = index * Number(canvasData.canvas.clientHeight);
                    var textItem = canvasData.data.map(function (item) {
                        return "<div style=\"position: absolute; left: ".concat(item[1], "px; top: ").concat(item[2] + computedTop, "px\">").concat(item[0], "</div>");
                    });
                    return textItem.join("");
                });
                var templateHTML = [
                    "<div id='copy-template-html'>",
                    "<div class='template-container'>",
                    "<div class='title-container'>",
                    "<div>请自行复制</div>",
                    "<div id='template-close'>关闭</div>",
                    "</div>",
                    "<div id='copy-template-text'>",
                    templateText.join(""),
                    "</div>",
                    "</div>",
                    "</div>",
                ].join("");
                dom$1.append("body", templateHTML);
                dom$1.append("body", templateCSS);
                var closeButton = document.querySelector("#copy-template-html #template-close");
                var close = function () {
                    dom$1.remove("#copy-template-html");
                    dom$1.remove("#copy-template-css");
                    closeButton.removeEventListener("click", close);
                };
                closeButton.addEventListener("click", close);
            };
            document.addEventListener("DOMContentLoaded", function () {
                dom$1.append("head", "<style>#copy-btn-wk{padding: 10px; background: rgba(0,0,0,0.5);position: fixed; left:0; top: 40%;cursor: pointer;color: #fff; z-index: 99999;}</style>");
                dom$1.append("body", "<div id='copy-btn-wk'>复制</div>");
                var btn = dom$1.query("#copy-btn-wk");
                btn && (btn.onclick = render);
            });
        },
        getSelectedText: function () {
            if (window.getSelection && window.getSelection().toString()) {
                return window.getSelection().toString();
            }
            var result = /查看全部包含“([\s\S]*?)”的文档/.exec(document.body.innerHTML);
            if (result)
                return result[1];
            return "";
        },
    };

    var website$6 = {
        regexp: new RegExp("xiaohongshu"),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
            utils.enableOnKeyDownByCapture();
        },
    };

    var website$5 = {
        regexp: new RegExp("leetcode"),
        init: function () {
            utils.hideButton();
            utils.enableOnCopy("#lc-home");
        },
    };

    var website$4 = {
        regexp: /csdn/,
        init: function () {
            utils.hideButton();
            utils.enableOnCopyByCapture();
            utils.enableUserSelectByCSS();
        },
    };

    var website$3 = {
        regexp: new RegExp("bilibili"),
        init: function () {
            utils.hideButton();
            utils.enableOnCopyByCapture();
        },
    };

    var website$2 = {
        regexp: new RegExp("cnki"),
        init: function () {
            utils.hideButton();
            utils.enableOnContextMenuByCapture();
            utils.enableOnKeyDownByCapture();
            utils.enableOnCopyByCapture();
        },
    };

    var website$1 = {
        regexp: new RegExp([
            "commandlinux",
            "cnki",
            "ruiwen",
            "oh100",
            "fwsir",
            "wenxm",
            "unjs",
            "ahsrst",
            "yjbys",
            "360doc",
            "850500",
            "jianbiaoku",
            "kt250",
            "kejudati",
            "baibeike",
            "yuque",
            "cnrencai",
            "kodiplayer",
            "tongxiehui",
            "ndPureView",
            "jianshu",
            "linovelib",
            "chazidian",
            "juejin",
            "zgbk",
            "wenmi",
            "yuedu\\.baidu",
            "inrrp",
            "shubaoc",
            "51cto",
            "ximalaya",
        ].join("|")),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
            utils.enableOnCopyByCapture();
        },
    };

    var website = {
        regexp: new RegExp(["wjx", "fanyi\\.baidu", "tianqi"].join("|")),
        init: function () {
            utils.hideButton();
            utils.enableUserSelectByCSS();
            utils.enableOnCopyByCapture();
            utils.enableOnKeyDownByCapture();
            utils.enableOnSelectStartByCapture();
            utils.enableOnContextMenuByCapture();
        },
    };

    var websites = [
        website$p,
        website$o,
        website$n,
        website$m,
        website$l,
        website$k,
        website$j,
        website$i,
        website$h,
        website$g,
        website$f,
        website$e,
        website$d,
        website$c,
        website$b,
        website$a,
        website$9,
        website$8,
        website$7,
        website$6,
        website$q,
        website$5,
        website$4,
        website$3,
        website$2,
        website$1,
        website,
    ];

    var siteGetSelectedText = null;
    var initWebsite = function () {
        var websiteConfig = {
            initCopyEvent: true,
            runAt: DOM_STAGE.END,
        };
        var mather = function (regex, website) {
            if (regex.test(window.location.href)) {
                if (website.config)
                    websiteConfig = Object.assign(websiteConfig, website.config);
                if (websiteConfig.runAt === DOM_STAGE.END) {
                    document.addEventListener(DOM_READY, function () { return website.init(); });
                }
                else {
                    website.init();
                }
                if (website.getSelectedText)
                    siteGetSelectedText = website.getSelectedText;
                return true;
            }
            return false;
        };
        websites.some(function (website) { return mather(website.regexp, website); });
        return websiteConfig;
    };
    var getSelectedText = function () {
        if (siteGetSelectedText)
            return siteGetSelectedText();
        if (window.getSelection)
            return window.getSelection().toString();
        if (document.getSelection)
            return document.getSelection().toString();
        if (document.selection)
            return document.selection.createRange().text;
        return "";
    };

    (function () {
        var websiteConfig = initWebsite();
        initBaseEvent(websiteConfig);
        initBaseStyle();
        document.addEventListener("mouseup", function (e) {
            var content = getSelectedText();
            if (isEmptyContent(content)) {
                instance.hide();
                return "";
            }
            instance.onCopy(content, e);
        });
    })();

})();