// ==UserScript== // @name 🔥解除复制限制,支持百度文库,360文库🔥 // @namespace https://www.softrr.cn/ // @version 2.0.3 // @author hackhase // @description 有些网站做了限制,没法实现右键复制,这个脚本就是为了解决这个问题。 // @license MIT // @icon http://pubimage.360doc.com/index7/nlogo.jpg // @match *://www.jdxzz.com/* // @match *://wenku.baidu.com/view/* // @match *://www.51test.net/show/* // @match *://www.xuexila.com/* // @match *://www.cspengbo.com/* // @match *://*.diyifanwen.com/* // @match *://*.cnitpm.com/* // @match *://*.ruiwen.com/* // @match *://www.oh100.com/* // @match *://www.fwsir.com/* // @match *://www.wenxm.cn/* // @match *://www.unjs.com/* // @match *://www.ahsrst.cn/* // @match *://*.360doc.com/content/* // @match *://*.chazidian.com/* // @match *://blog.51cto.com/* // @require https://cdn.jsdelivr.net/npm/vue@3.3.11/dist/vue.global.prod.js // @connect www.softrr.cn // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant unsafeWindow // @downloadURL none // ==/UserScript== (t=>{if(typeof GM_addStyle=="function"){GM_addStyle(t);return}const e=document.createElement("style");e.textContent=t,document.head.append(e)})(' @charset "UTF-8";:root{font-family:Inter,Avenir,Helvetica,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.card{padding:2em}#app{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.modal-wrapper[data-v-1a7d1275]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999}.modalContainer[data-v-1a7d1275]{background-color:#fff;padding:20px;border-radius:5px}.header[data-v-1a7d1275]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.header h2[data-v-1a7d1275]{margin:0;font-size:20px;font-weight:700}.header button[data-v-1a7d1275]{border:none;background-color:transparent;font-size:20px;cursor:pointer}.contentClass[data-v-1a7d1275]{max-height:400px;overflow:auto;font-size:16px;display:flex;justify-content:space-between}.contentClass .produce p[data-v-1a7d1275]{margin-top:15px}.contentClass .produce .ipt[data-v-1a7d1275]{margin-top:15px;height:30px;border-radius:5px;padding-left:10px}.contentClass .img[data-v-1a7d1275]{display:flex;align-items:center;justify-content:center}.contentClass .img img[data-v-1a7d1275]{width:180px}input[data-v-1a7d1275]::-webkit-input-placeholder{color:#aab2bd;font-size:14px;padding-left:5px}.copy[data-v-23af12e5]{width:160px;z-index:999}.copy .btn[data-v-23af12e5]{background-color:red;color:#fff} '); (function (vue) { 'use strict'; var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; function getDefaultExportFromCjs(x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; } var clipboard = { exports: {} }; /*! * clipboard.js v2.0.11 * https://clipboardjs.com/ * * Licensed MIT © Zeno Rocha */ (function(module, exports) { (function webpackUniversalModuleDefinition(root, factory) { module.exports = factory(); })(commonjsGlobal, function() { return ( /******/ function() { var __webpack_modules__ = { /***/ 686: ( /***/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__2) { __webpack_require__2.d(__webpack_exports__, { "default": function() { return ( /* binding */ clipboard2 ); } }); var tiny_emitter = __webpack_require__2(279); var tiny_emitter_default = /* @__PURE__ */ __webpack_require__2.n(tiny_emitter); var listen = __webpack_require__2(370); var listen_default = /* @__PURE__ */ __webpack_require__2.n(listen); var src_select = __webpack_require__2(817); var select_default = /* @__PURE__ */ __webpack_require__2.n(src_select); function command(type) { try { return document.execCommand(type); } catch (err) { return false; } } var ClipboardActionCut = function ClipboardActionCut2(target) { var selectedText = select_default()(target); command("cut"); return selectedText; }; var actions_cut = ClipboardActionCut; function createFakeElement(value) { var isRTL = document.documentElement.getAttribute("dir") === "rtl"; var fakeElement = document.createElement("textarea"); fakeElement.style.fontSize = "12pt"; fakeElement.style.border = "0"; fakeElement.style.padding = "0"; fakeElement.style.margin = "0"; fakeElement.style.position = "absolute"; fakeElement.style[isRTL ? "right" : "left"] = "-9999px"; var yPosition = window.pageYOffset || document.documentElement.scrollTop; fakeElement.style.top = "".concat(yPosition, "px"); fakeElement.setAttribute("readonly", ""); fakeElement.value = value; return fakeElement; } var fakeCopyAction = function fakeCopyAction2(value, options) { var fakeElement = createFakeElement(value); options.container.appendChild(fakeElement); var selectedText = select_default()(fakeElement); command("copy"); fakeElement.remove(); return selectedText; }; var ClipboardActionCopy = function ClipboardActionCopy2(target) { var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { container: document.body }; var selectedText = ""; if (typeof target === "string") { selectedText = fakeCopyAction(target, options); } else if (target instanceof HTMLInputElement && !["text", "search", "url", "tel", "password"].includes(target === null || target === void 0 ? void 0 : target.type)) { selectedText = fakeCopyAction(target.value, options); } else { selectedText = select_default()(target); command("copy"); } return selectedText; }; var actions_copy = ClipboardActionCopy; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof2(obj2) { return typeof obj2; }; } else { _typeof = function _typeof2(obj2) { return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }; } return _typeof(obj); } var ClipboardActionDefault = function ClipboardActionDefault2() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; var _options$action = options.action, action = _options$action === void 0 ? "copy" : _options$action, container = options.container, target = options.target, text = options.text; if (action !== "copy" && action !== "cut") { throw new Error('Invalid "action" value, use either "copy" or "cut"'); } if (target !== void 0) { if (target && _typeof(target) === "object" && target.nodeType === 1) { if (action === "copy" && target.hasAttribute("disabled")) { throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); } if (action === "cut" && (target.hasAttribute("readonly") || target.hasAttribute("disabled"))) { throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`); } } else { throw new Error('Invalid "target" value, use a valid Element'); } } if (text) { return actions_copy(text, { container }); } if (target) { return action === "cut" ? actions_cut(target) : actions_copy(target, { container }); } }; var actions_default = ClipboardActionDefault; function clipboard_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { clipboard_typeof = function _typeof2(obj2) { return typeof obj2; }; } else { clipboard_typeof = function _typeof2(obj2) { return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }; } return clipboard_typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) { o2.__proto__ = p2; return o2; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self2, call) { if (call && (clipboard_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self2); } function _assertThisInitialized(self2) { if (self2 === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self2; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function() { })); return true; } catch (e2) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o2) { return o2.__proto__ || Object.getPrototypeOf(o2); }; return _getPrototypeOf(o); } function getAttributeValue(suffix, element) { var attribute = "data-clipboard-".concat(suffix); if (!element.hasAttribute(attribute)) { return; } return element.getAttribute(attribute); } var Clipboard2 = /* @__PURE__ */ function(_Emitter) { _inherits(Clipboard3, _Emitter); var _super = _createSuper(Clipboard3); function Clipboard3(trigger, options) { var _this; _classCallCheck(this, Clipboard3); _this = _super.call(this); _this.resolveOptions(options); _this.listenClick(trigger); return _this; } _createClass(Clipboard3, [{ key: "resolveOptions", value: function resolveOptions() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; this.action = typeof options.action === "function" ? options.action : this.defaultAction; this.target = typeof options.target === "function" ? options.target : this.defaultTarget; this.text = typeof options.text === "function" ? options.text : this.defaultText; this.container = clipboard_typeof(options.container) === "object" ? options.container : document.body; } /** * Adds a click event listener to the passed trigger. * @param {String|HTMLElement|HTMLCollection|NodeList} trigger */ }, { key: "listenClick", value: function listenClick(trigger) { var _this2 = this; this.listener = listen_default()(trigger, "click", function(e2) { return _this2.onClick(e2); }); } /** * Defines a new `ClipboardAction` on each click event. * @param {Event} e */ }, { key: "onClick", value: function onClick(e2) { var trigger = e2.delegateTarget || e2.currentTarget; var action = this.action(trigger) || "copy"; var text = actions_default({ action, container: this.container, target: this.target(trigger), text: this.text(trigger) }); this.emit(text ? "success" : "error", { action, text, trigger, clearSelection: function clearSelection() { if (trigger) { trigger.focus(); } window.getSelection().removeAllRanges(); } }); } /** * Default `action` lookup function. * @param {Element} trigger */ }, { key: "defaultAction", value: function defaultAction(trigger) { return getAttributeValue("action", trigger); } /** * Default `target` lookup function. * @param {Element} trigger */ }, { key: "defaultTarget", value: function defaultTarget(trigger) { var selector = getAttributeValue("target", trigger); if (selector) { return document.querySelector(selector); } } /** * Allow fire programmatically a copy action * @param {String|HTMLElement} target * @param {Object} options * @returns Text copied. */ }, { key: "defaultText", /** * Default `text` lookup function. * @param {Element} trigger */ value: function defaultText(trigger) { return getAttributeValue("text", trigger); } /** * Destroy lifecycle. */ }, { key: "destroy", value: function destroy() { this.listener.destroy(); } }], [{ key: "copy", value: function copy(target) { var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { container: document.body }; return actions_copy(target, options); } /** * Allow fire programmatically a cut action * @param {String|HTMLElement} target * @returns Text cutted. */ }, { key: "cut", value: function cut(target) { return actions_cut(target); } /** * Returns the support of the given action, or all actions if no action is * given. * @param {String} [action] */ }, { key: "isSupported", value: function isSupported() { var action = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ["copy", "cut"]; var actions = typeof action === "string" ? [action] : action; var support = !!document.queryCommandSupported; actions.forEach(function(action2) { support = support && !!document.queryCommandSupported(action2); }); return support; } }]); return Clipboard3; }(tiny_emitter_default()); var clipboard2 = Clipboard2; } ), /***/ 828: ( /***/ function(module2) { var DOCUMENT_NODE_TYPE = 9; if (typeof Element !== "undefined" && !Element.prototype.matches) { var proto = Element.prototype; proto.matches = proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector; } function closest(element, selector) { while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { if (typeof element.matches === "function" && element.matches(selector)) { return element; } element = element.parentNode; } } module2.exports = closest; } ), /***/ 438: ( /***/ function(module2, __unused_webpack_exports, __webpack_require__2) { var closest = __webpack_require__2(828); function _delegate(element, selector, type, callback, useCapture) { var listenerFn = listener.apply(this, arguments); element.addEventListener(type, listenerFn, useCapture); return { destroy: function() { element.removeEventListener(type, listenerFn, useCapture); } }; } function delegate(elements, selector, type, callback, useCapture) { if (typeof elements.addEventListener === "function") { return _delegate.apply(null, arguments); } if (typeof type === "function") { return _delegate.bind(null, document).apply(null, arguments); } if (typeof elements === "string") { elements = document.querySelectorAll(elements); } return Array.prototype.map.call(elements, function(element) { return _delegate(element, selector, type, callback, useCapture); }); } function listener(element, selector, type, callback) { return function(e2) { e2.delegateTarget = closest(e2.target, selector); if (e2.delegateTarget) { callback.call(element, e2); } }; } module2.exports = delegate; } ), /***/ 879: ( /***/ function(__unused_webpack_module, exports2) { exports2.node = function(value) { return value !== void 0 && value instanceof HTMLElement && value.nodeType === 1; }; exports2.nodeList = function(value) { var type = Object.prototype.toString.call(value); return value !== void 0 && (type === "[object NodeList]" || type === "[object HTMLCollection]") && "length" in value && (value.length === 0 || exports2.node(value[0])); }; exports2.string = function(value) { return typeof value === "string" || value instanceof String; }; exports2.fn = function(value) { var type = Object.prototype.toString.call(value); return type === "[object Function]"; }; } ), /***/ 370: ( /***/ function(module2, __unused_webpack_exports, __webpack_require__2) { var is = __webpack_require__2(879); var delegate = __webpack_require__2(438); function listen(target, type, callback) { if (!target && !type && !callback) { throw new Error("Missing required arguments"); } if (!is.string(type)) { throw new TypeError("Second argument must be a String"); } if (!is.fn(callback)) { throw new TypeError("Third argument must be a Function"); } if (is.node(target)) { return listenNode(target, type, callback); } else if (is.nodeList(target)) { return listenNodeList(target, type, callback); } else if (is.string(target)) { return listenSelector(target, type, callback); } else { throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList"); } } function listenNode(node, type, callback) { node.addEventListener(type, callback); return { destroy: function() { node.removeEventListener(type, callback); } }; } function listenNodeList(nodeList, type, callback) { Array.prototype.forEach.call(nodeList, function(node) { node.addEventListener(type, callback); }); return { destroy: function() { Array.prototype.forEach.call(nodeList, function(node) { node.removeEventListener(type, callback); }); } }; } function listenSelector(selector, type, callback) { return delegate(document.body, selector, type, callback); } module2.exports = listen; } ), /***/ 817: ( /***/ function(module2) { function select(element) { var selectedText; if (element.nodeName === "SELECT") { element.focus(); selectedText = element.value; } else if (element.nodeName === "INPUT" || element.nodeName === "TEXTAREA") { var isReadOnly = element.hasAttribute("readonly"); if (!isReadOnly) { element.setAttribute("readonly", ""); } element.select(); element.setSelectionRange(0, element.value.length); if (!isReadOnly) { element.removeAttribute("readonly"); } selectedText = element.value; } else { if (element.hasAttribute("contenteditable")) { element.focus(); } var selection = window.getSelection(); var range = document.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); selectedText = selection.toString(); } return selectedText; } module2.exports = select; } ), /***/ 279: ( /***/ function(module2) { function E() { } E.prototype = { on: function(name, callback, ctx) { var e2 = this.e || (this.e = {}); (e2[name] || (e2[name] = [])).push({ fn: callback, ctx }); return this; }, once: function(name, callback, ctx) { var self2 = this; function listener() { self2.off(name, listener); callback.apply(ctx, arguments); } listener._ = callback; return this.on(name, listener, ctx); }, emit: function(name) { var data = [].slice.call(arguments, 1); var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); var i = 0; var len = evtArr.length; for (i; i < len; i++) { evtArr[i].fn.apply(evtArr[i].ctx, data); } return this; }, off: function(name, callback) { var e2 = this.e || (this.e = {}); var evts = e2[name]; var liveEvents = []; if (evts && callback) { for (var i = 0, len = evts.length; i < len; i++) { if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]); } } liveEvents.length ? e2[name] = liveEvents : delete e2[name]; return this; } }; module2.exports = E; module2.exports.TinyEmitter = E; } ) /******/ }; var __webpack_module_cache__ = {}; function __webpack_require__(moduleId) { if (__webpack_module_cache__[moduleId]) { return __webpack_module_cache__[moduleId].exports; } var module2 = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; __webpack_modules__[moduleId](module2, module2.exports, __webpack_require__); return module2.exports; } !function() { __webpack_require__.n = function(module2) { var getter = module2 && module2.__esModule ? ( /******/ function() { return module2["default"]; } ) : ( /******/ function() { return module2; } ); __webpack_require__.d(getter, { a: getter }); return getter; }; }(); !function() { __webpack_require__.d = function(exports2, definition) { for (var key in definition) { if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports2, key)) { Object.defineProperty(exports2, key, { enumerable: true, get: definition[key] }); } } }; }(); !function() { __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }; }(); return __webpack_require__(686); }().default ); }); })(clipboard); var clipboardExports = clipboard.exports; const Clipboard = /* @__PURE__ */ getDefaultExportFromCjs(clipboardExports); const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const _withScopeId = (n) => (vue.pushScopeId("data-v-1a7d1275"), n = n(), vue.popScopeId(), n); const _hoisted_1$1 = { class: "modalContainer" }; const _hoisted_2 = { class: "header" }; const _hoisted_3 = { class: "contentClass" }; const _hoisted_4 = { class: "produce" }; const _hoisted_5 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", null, "1、扫描右侧公众号,点击关注!", -1)); const _hoisted_6 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", null, "2、在软件爬取者后台回复:验证码", -1)); const _hoisted_7 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", null, "3、在下方输入框输入获取的验证码后回车", -1)); const _hoisted_8 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("div", { class: "img" }, [ /* @__PURE__ */ vue.createElementVNode("img", { src: "https://www.softrr.cn/assets/pqz-daa4b840.jpg", alt: "" }) ], -1)); const _sfc_main$1 = { __name: "Model", props: { title: { type: String, required: true }, code: { type: Number || String } }, setup(__props, { expose: __expose }) { const props = __props; const visible = vue.ref(false); const openModal = () => { visible.value = true; }; const closeModal = () => { visible.value = false; }; __expose({ visible, openModal, closeModal }); const codeValue = vue.ref(); const enterCode = () => { if (codeValue.value == props.code) { localStorage.setItem("code", codeValue.value); visible.value = false; alert("验证成功,畅享复制粘贴吧!"); codeValue.value = ""; } else { alert("验证码错误,请重新输入!"); codeValue.value = ""; } }; return (_ctx, _cache) => { return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { class: "modal-wrapper", onClick: vue.withModifiers(closeModal, ["self"]) }, [ vue.createElementVNode("div", _hoisted_1$1, [ vue.createElementVNode("div", _hoisted_2, [ vue.createElementVNode("h2", null, vue.toDisplayString(__props.title), 1), vue.createElementVNode("button", { onClick: closeModal }, "X") ]), vue.createElementVNode("div", _hoisted_3, [ vue.createElementVNode("div", _hoisted_4, [ _hoisted_5, _hoisted_6, _hoisted_7, vue.withDirectives(vue.createElementVNode("input", { class: "ipt", type: "text", "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => codeValue.value = $event), onKeydown: vue.withKeys(enterCode, ["enter"]), placeholder: "请输入验证码后按回车" }, null, 544), [ [vue.vModelText, codeValue.value] ]) ]), _hoisted_8 ]) ]) ], 512)), [ [vue.vShow, visible.value] ]); }; } }; const Model = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-1a7d1275"]]); var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)(); const getCode = () => { return new Promise((resolve, reject) => { _GM_xmlhttpRequest({ method: "GET", url: `https://www.softrr.cn/crawler/getCode`, headers: { Referer: "https://www.softrr.cn/", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36" }, onload: function(res) { resolve(JSON.parse(res.response).data[0].code); } }); }); }; const _hoisted_1 = ["data-clipboard-text"]; const _sfc_main = { __name: "App", setup(__props) { const selectedText = vue.ref(""); const flag = vue.ref(false); const mouseX = vue.ref(0); const mouseY = vue.ref(0); document.body.oncopy = function() { e.stopPropagation(); return true; }; const allowCopy = function(e2) { e2.stopImmediatePropagation(); return true; }; document.addEventListener("copy", allowCopy, true); document.body.onselectstart = function(event) { event.stopPropagation(); event.preventDefault = true; }; document.onselectstart = function(event) { event.stopPropagation(); event.preventDefault = true; }; document.selection = function(event) { event.stopPropagation(); event.preventDefault = true; }; window.addEventListener("mouseup", (e2) => { if (window.getSelection().toString() !== "") { flag.value = true; mouseX.value = e2.clientX; mouseY.value = e2.clientY; } else { flag.value = false; } }); if (document.querySelector(".con") !== null) { document.querySelector(".con").style.zindex = 0; } const code = vue.ref(); const modelRef = vue.ref(); const onCopyText = async () => { let locaCode = localStorage.getItem("code") || ""; code.value = await getCode(); if (locaCode == code.value) { document.oncopy = function(event) { event.preventDefault = true; }; document.onselectstart = function(event) { event.preventDefault = true; }; document.oncontextmenu = function(event) { event.preventDefault = true; }; if (window.getSelection) { selectedText.value = window.getSelection().toString(); } else if (document.selection && document.selection.type !== "Control") { selectedText.value = document.selection.createRange().text; } const clipboard2 = new Clipboard(".btn"); clipboard2.on("success", () => { clipboard2.destroy(); }); clipboard2.on("error", () => { alert("复制失败"); clipboard2.destroy(); }); flag.value = false; window.getSelection().removeAllRanges(); } else { modelRef.value.openModal(); flag.value = true; } }; const title = vue.ref("为了更好地服务大家,需要进行简单的验证。"); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ vue.withDirectives(vue.createElementVNode("div", { class: "copy", style: vue.normalizeStyle({ position: "fixed", top: mouseY.value + "px", left: mouseX.value + 15 + "px" }) }, [ vue.createElementVNode("button", { onClick: onCopyText, class: "btn", "data-clipboard-text": selectedText.value }, "复制", 8, _hoisted_1) ], 4), [ [vue.vShow, flag.value] ]), vue.createVNode(Model, { title: title.value, code: code.value, ref_key: "modelRef", ref: modelRef }, null, 8, ["title", "code"]) ], 64); }; } }; const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-23af12e5"]]); vue.createApp(App).mount( (() => { const app = document.createElement("div"); document.body.append(app); return app; })() ); })(Vue);