您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
MT论坛效果增强,如自动签到、自动展开帖子、滚动加载评论、显示uid、屏蔽用户、手机版小黑屋、编辑器优化等
当前为
// ==UserScript== // @name MT论坛 // @namespace http://tampermonkey.net/ // @description MT论坛效果增强,如自动签到、自动展开帖子、滚动加载评论、显示uid、屏蔽用户、手机版小黑屋、编辑器优化等 // @version 2.5.6 // @author WhiteSevs // @icon https://bbs.binmt.cc/favicon.ico // @match *://bbs.binmt.cc/* // @compatible edge Beta/Dev/Candy 测试通过 // @compatible Yandex 测试通过 // @compatible Kiwi 测试通过 // @license GPL-3.0-only // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_setClipboard // @grant GM_xmlhttpRequest // @grant unsafeWindow // @run-at document-start // @supportURL https://github.com/893177236/Monkey_script // @require https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.4.1/jquery.min.js // @require https://unpkg.com/any-touch/dist/any-touch.umd.min.js // @require https://gf.qytechs.cn/scripts/449471-viewer/code/Viewer.js?version=1081056 // @require https://gf.qytechs.cn/scripts/449512-xtiper/code/Xtiper.js?version=1081249 // @require https://gf.qytechs.cn/scripts/449562-nzmsgbox/code/NZMsgBox.js?version=1082044 // @require https://gf.qytechs.cn/scripts/452322-js-watermark/code/js-watermark.js // ==/UserScript== (function () { 'use strict'; const log = { success: (str) => { console.log("%c" + str, "color: #00a5ff"); }, error: (str) => { console.trace("%c" + str, "color: #f20000"); } } function tryCatch(func, params, errorFunc) { /* 捕获错误 */ let ret = null; try { if (typeof func == "string") { ret = window.eval(func); } else { if (params == null) { ret = func(); } else { ret = func(params); } } } catch (error) { console.log("%c" + (func.name ? func.name : func + "出现错误"), "color: #f20000"); console.log("%c" + ("错误原因:" + error), "color: #f20000"); console.trace(func); window.eval(errorFunc); } finally { return ret; } } const popup2 = { /* 自定义新的popup */ config: { mask: { zIndex: 1000000, style: `#force-mask{ width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; background: black; opacity: 0.6; z-index: 1000000; display: flex; align-content: center; justify-content: center; align-items: center; }`, }, confirm: { zIndex: 1000100, style: ` #popup2-confirm .popup2-confirm-cancel, #popup2-confirm .popup2-confirm-ok{ user-select: none }`, }, toast: { zIndex: 1100000, style: `.popup2-toast{ width: fit-content; padding: 10px 16px; color: #fff; background: rgba(0,0,0,0.65); position: fixed; margin: 0 auto; left: 0; right: 0; bottom: 0; border-radius: 4px; font-size: 14px; z-index: 1100000; max-width: 80vw; opacity: 1; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-backface-visibility: hidden; -webkit-font-smoothing: antialiased/subpixel-antialiased; touch-action: pan-y; -webkit-user-select: none; transform: translateY(160px); } .popup2-toast-show{ transform: translateY(-80px) !important; transition: all 0.2s ease 0s; -webkit-transition: all 0.2s ease 0s; }`, } }, init: () => { Object.keys(popup2.config).forEach(function (key) { let style = popup2.config[key].style; if (style != "") { GM_addStyle(style); } }) }, force_mask_init: function () { document.documentElement.style.overflow = 'hidden'; if (!$jq("#force-mask").length) { $jq('body').append($jq('<div id="force-mask"></div>')); } else { $jq("#force-mask").html(""); } }, confirm: function (param_options) { let options = { "text": "Call By popup2.confirm", "callback": () => { popup2.confirm_close(); }, "btnReverse": false, "mask": true, "only": true, "btnCancelText": "取消", "btnOkText": "确定", "btnOther": { "enable": false, "text": "其它方式", "callback": () => { popup2.confirm_close(); } } } if (typeof param_options == "string") { options.text = param_options; } else { for (var key in options) { if (typeof param_options[key] !== "undefined") { options[key] = param_options[key]; } } } let bottomBtnHTML = ""; let confirmHTML = ""; if (!options.btnReverse) { bottomBtnHTML = `<a href="javascript:;" onclick="popup2.confirm_close();" class="tip_btn bg_f f_b popup2-confirm-cancel">${options.btnCancelText}</a> <a href="javascript:;" class="tip_btn bg_f f_0 popup2-confirm-ok"> <span class="tip_lx">${options.btnOkText}</span> </a>`; } else { bottomBtnHTML = `<a href="javascript:;" class="tip_btn bg_f f_0 popup2-confirm-ok">${options.btnOkText}</a> <a href="javascript:;" onclick="popup2.confirm_close();" class="tip_btn bg_f f_b popup2-confirm-cancel"> <span class="tip_lx">${options.btnCancelText}</span> </a>`; } confirmHTML = ` <div class="dialogbox popup2-popmenu" style="position: fixed;left: 50%;top: 50%;transform: translate(-50%, -50%);z-index: ${popup2.config.confirm.zIndex};"> <div id="popup2-confirm"> <div class="comiis_tip bg_f cl"> <dt class="f_b">${options.text}</dt> <dd class="b_t cl"> <div class="popup2-confirm-bottom-btn">${bottomBtnHTML}</div> </dd> </div> </div> </div> `; if (options.only) { this.confirm_close(); } let jqConfirmHTML = $jq(confirmHTML); if (options.btnOther.enable) { jqConfirmHTML.find("dd.b_t .popup2-confirm-bottom-btn").after($jq(` <div> <a href="javascript:;" class="tip_btn bg_f f_0 popup2-confirm-other" style="width: 100%;color: #f00000 !important;">${options.btnOther.text}</a> </div> `)); jqConfirmHTML.find(".popup2-confirm-other").on("click", function () { tryCatch(options.btnOther.callback); }); } $jq("body").append(jqConfirmHTML); $jq(`#popup2-confirm a:contains('${options.btnOkText}')`).on("click", () => { tryCatch(options.callback); }) if (options.mask) { this.mask_show(); } else { this.mask_close(); } }, toast: (param_options) => { let options = { "text": "Call By popup2.toast", "only": true, "delayTime": 2000 } if (typeof param_options == "string") { options.text = param_options; } else { for (var key in options) { if (typeof param_options[key] !== "undefined") { options[key] = param_options[key]; } } } if (options.only) { popup2.toast_close(); } let toastobj = $jq(`<div class="popup2-toast">${options.text}</div>`); $jq('body').append(toastobj); toastobj.css("transform", `matrix(1, 0, 0, 1, 0, ${toastobj.outerHeight() > 80 ? toastobj.outerHeight()+80 : 80})`); setTimeout(() => { toastobj.addClass("popup2-toast-show"); setTimeout(() => { popup2.toast_close(toastobj); }, options.delayTime); }, 150); }, mask_show: function () { this.force_mask_init(); $jq('#force-mask').show(); }, mask_loading_show: function () { this.force_mask_init(); $jq('#force-mask').html(`<img src="data:image/gif;base64,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" class="comiis_loading comiis_noloadimage">`).show(); }, mask_close: function () { $jq('#force-mask').html("").hide(); document.documentElement.style.overflow = 'auto'; }, toast_close: (toastobj) => { if (toastobj) { toastobj.remove(); } else { $jq(".popup2-toast").remove(); } }, confirm_close: function () { this.mask_close(); $jq.each($jq(".popup2-popmenu"), function (index, obj) { $jq(obj).remove(); }); } }; let xtips = { /* 因xtip的消息函数会重复显示,自定义一个 */ value: [], toast: (text, options) => { xtips.value.forEach(item => { xtip.close(item); }) xtips.value = []; let xtip_toast_id = null; if (options == null) { xtip_toast_id = xtip.msg(text); } else { xtip_toast_id = xtip.msg(text, options); } xtips.value = xtips.value.concat(xtip_toast_id); } } let mt_config = { dom_obj: { beauty_select: function () { /* 下拉列表对象 */ return document.getElementsByClassName("beauty-select")[0]; }, combobox_switch: function () { /* 复选框对象 */ return document.getElementsByClassName("whitesevcheckbox")[0]; }, comiis_verify: function () { /* 帖子内各个人的信息节点【list】 */ return document.getElementsByClassName("comiis_verify"); }, comiis_formlist: function () { /* 导航中最新、热门、精华、恢复、抢沙发的各个帖子【list】 */ return document.getElementsByClassName("forumlist_li"); }, comiis_mmlist: function () { return document.getElementsByClassName("comiis_mmlist"); }, comiis_postli: function () { /* 帖子内评论,包括帖子内容主体,第一个就是主体【list】 */ return document.getElementsByClassName("comiis_postli comiis_list_readimgs nfqsqi") }, post_bottom_controls: function () { /* 帖子底部一栏控件 */ return document.getElementsByClassName("comiis_znalist_bottom b_t cl") }, post_list_of_comments: function () { /* 帖子内评论列表 */ return $jq(".comiis_postlist.kqide"); }, post_next_commect: function () { /* 帖子内评论下一页的按钮 */ return document.querySelector("div.comiis_page.bg_f>a:nth-child(3)"); } }, rexp: { bbs: /bbs.binmt.cc/, /* 论坛 */ search_url: /bbs.binmt.cc\/search.php/g, /* 搜索页 */ chat_url: /home.php\?mod=space&do=pm&subop=view/g, /* 聊天页 */ home_url: /home.php\?mod=spacecp&ac=profile&op=info/g, /* 个人空间页 */ home_url_brief: /home.php\?mod=space/g, /* 个人空间页简略url */ home_url_at: /bbs.binmt.cc\/space-uid-/g, /* 个人空间页的@点进去 */ home_kmisign_url: /bbs.binmt.cc\/(forum.php\?mod=guide&view=hot(|&mobile=2)|k_misign-sign.html)/g, /* 主页和签到页链接 */ home_space_url: /bbs\.binmt\.cc\/home\.php\?mod=space&do=profile&mycenter/g, /* 【我的】 个人信息页链接 */ home_space_pc_uid_url: /space-uid-(.*?).html/, /* PC 个人空间链接uid */ reply_forum: /bbs.binmt.cc\/forum.php\?mod=post&action=reply/g, /* 回复的界面url */ sign_url: "", navigation_url: "", community_url: /forum.php\?forumlist/, /* 社区 */ forum_post: /(bbs.binmt.cc\/thread-|bbs.binmt.cc\/forum.php\?mod=viewthread)/g, /* 帖子链接 */ forum_post_pc: /.*:\/\/bbs.binmt.cc\/thread.*/, /* 帖子链接-PC */ forum_guide_url: /bbs.binmt.cc\/forum.php\?mod=guide/g, /* 导航链接 */ forum_post_reply: /forum.php\?mod=post&action=reply/g, /* 帖子中回复的链接 */ forum_post_page: '&page=(.*)', /* 帖子链接的当前所在页 page */ forum_post_pc_page: 'thread-(.*?)-', /* PC帖子链接的当前所在页 page */ forum_plate_text: /休闲灌水|求助问答|逆向教程|资源共享|综合交流|编程开发|玩机教程|建议反馈/g, /* 各版块名称 */ plate_url: /bbs.binmt.cc\/forum-[0-9]{1,2}-[0-9]{1,2}.html/g, /* 板块链接 */ formhash: /formhash=(.*)&/, hash: /hash=(.+)&/, /* 论坛账号的凭证 */ font_special: /<font.*?>|<\/font>|<strike>|<strong>|<i>|<u>|align=".*?"|<br>[\s]*<br>[\s]*<br>/g, /* 帖子内特殊字体格式 */ forum_post_guide_url: /bbs.binmt.cc\/page-[1-5].html|bbs.binmt.cc\/forum.php\?mod=guide/g, /* 帖子链接和导航链接 */ mt_uid: /uid=(\d+)/, nologin: /member.php\?mod=logging&action=login(|&mobile=2)/g, /* 未登录(不可用) */ pc_useragent: 'Windows', /* pc识别 */ k_misign_sign: "bbs.binmt.cc\/k_misign-sign.html", post_forum: /forum.php\?mod=post&action=newthread/, /* 发布帖子 */ edit_forum: /forum.php\?mod=post&action=edit/, /* 编辑帖子 */ }, GMRunStartTime: Date.now() } /* mt全屏遮罩调用 popup.open('<img src="https://bbs.binmt.cc/template/comiis_app/comiis/img/imageloading.gif" class="comiis_loading comiis_noloadimage">'); 关闭方式 popup.close() */ let utils = { formatDateStrToStamp(datastring) { /* 把字符串格式的时间(完整,包括日期和时间)格式化成时间戳 */ let date = datastring; date = date.substring(0, 19); date = date.replace(/-/g, '/'); let timestamp = new Date(date).getTime(); /* let newDate = new Date(timestamp); */ return timestamp; }, formatTimeStrToStamp(timestring) { /* 字符串格式的时间(只有时间,没有日期)格式化成时间戳 */ let today = new Date(); let date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate() + " " + timestring; date = date.substring(0, 19); date = date.replace(/-/g, '/'); let timestamp = new Date(date).getTime(); /* let newDate = new Date(timestamp); */ return timestamp }, sortListByProperty(propertyName, model) { /* 数组按照内部某个值的大小比对排序,如[{"time":"2022-1-1"},{"time":"2022-2-2"}] */ return function (after_obj, before_obj) { var beforeValue = before_obj[propertyName]; /* 前 */ var aferValue = after_obj[propertyName]; /* 后 */ if (model.toLowerCase() === "desc") { if (aferValue > beforeValue) { return -1 } else if (aferValue < beforeValue) { return 1 } else { return 0 } } else { if (aferValue < beforeValue) { return -1 } else if (aferValue > beforeValue) { return 1 } else { return 0 } } } }, listToStringByValue(_list_, propertyName) { /* 数组根据 字段(int)合并成字符串 */ let content = ""; Array.from(_list_).forEach((item) => { content = content + item[propertyName]; }) return content }, jsonToArray(_json_) { /* json内的值合并到数组里 */ let retArray = []; Object.keys(_json_).forEach(function (key) { retArray = retArray.concat(_json_[key]); }) return retArray; }, jsonStrToObject(_json_str_) { /* json字符串转为json对象 */ return window.eval("(" + _json_str_ + ")"); }, randomArr(items) { /* 随机数组 */ var item = items[Math.floor(Math.random() * items.length)]; return item; }, randbix(n, m) { /* 随机小数点 */ bix = Math.random().toFixed(2); num = Number(utils.randomNum(n, m)) + Number(bix); r2 = utils.randomNum(2, 10); return num.toFixed(r2); }, randomNum(n, m) { /* 随机数字 */ var rander = Math.round(Math.random() * (m - n)) + n; return rander; }, getFormatTime(formatStr) { /* 获取自定义格式化时间, yyyy-MM-dd HH:mm:ss 2022-08-21 23:59:00 */ /** * yyyy 年 * MM 月 * dd 天 * HH 时 (24小时制) * hh 时 (12小时制) * mm 分 * ss 秒 */ function checkTime(i) { if (i < 10) return "0" + i; return i; } function timeSystemChange(_hour_) { /* 时间制修改 24小时制转12小时制 */ return _hour_ > 12 ? _hour_ - 12 : _hour_; } var time = new Date(); var yyyy = time.getFullYear(); /* 获取 年 */ var MM = checkTime(time.getMonth() + 1); /* 获取 月 */ var dd = checkTime(time.getDate()); /* 获取 日 */ var HH = checkTime(time.getHours()); /* 获取 时 (24小时制) */ var hh = checkTime(timeSystemChange(time.getHours())); /* 获取 时 (12小时制) */ var mm = checkTime(time.getMinutes()); /* 获取 分 */ var ss = checkTime(time.getSeconds()); /* 获取 秒 */ /****当时、分、秒、小于10时,则添加0****/ formatStr = formatStr.replace(/yyyy/g, yyyy); formatStr = formatStr.replace(/MM/g, MM); formatStr = formatStr.replace(/dd/g, dd); formatStr = formatStr.replace(/HH/g, HH); formatStr = formatStr.replace(/hh/g, hh); formatStr = formatStr.replace(/mm/g, mm); formatStr = formatStr.replace(/ss/g, ss); return formatStr; }, checkClickInDOM(obj) { /* 检测点击范围是否在该元素区域内 */ var x = Number(window.event.clientX) /* 鼠标相对屏幕横坐标 */ var y = Number(window.event.clientY) /* 鼠标相对屏幕纵坐标 */ var obj_x_left = Number(obj.getBoundingClientRect().left) /* obj相对屏幕的横坐标 */ var obj_x_right = Number( obj.getBoundingClientRect().left + obj.clientWidth ) /* obj相对屏幕的横坐标+width */ var obj_y_bottom = Number( obj.getBoundingClientRect().top + obj.clientHeight ) /* obj相对屏幕的纵坐标+height */ var obj_y_top = Number(obj.getBoundingClientRect().top) /* obj相对屏幕的纵坐标 */ if ((x >= obj_x_left && x <= obj_x_right && y >= obj_y_top && y <= obj_y_bottom) || obj.outerHTML.indexOf(window.event.target.innerHTML) != -1) { return true } else { return false } }, asyncSetTimeOut(fnStr, delayTime) { /* 同步执行延时函数 */ return new Promise(res => { setTimeout(() => { let ret = tryCatch(fnStr); res(ret); }, delayTime); }) }, asyncArrayForEach(array_data, array_func, completeRunFunc) { /* 同步执行foreach函数 */ Promise.all( Array.from(array_data).map(async (item, index) => { await tryCatch(array_func, [index, item]); }) ).then(() => { tryCatch(completeRunFunc); return null; }) }, sleep(delayTime) { /* 暂停执行xx毫秒,需要await */ return new Promise(res => { setTimeout(() => { res(); }, delayTime); }) }, cookie: () => { /*! js-cookie v3.0.1 | MIT */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, (function () { var current = global.Cookies; var exports = global.Cookies = factory(); exports.noConflict = function () { global.Cookies = current; return exports; }; }())); }(this, (function () { 'use strict'; /* eslint-disable no-var */ function assign(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { target[key] = source[key]; } } return target } /* eslint-enable no-var */ /* eslint-disable no-var */ var defaultConverter = { read: function (value) { if (value[0] === '"') { value = value.slice(1, -1); } return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent) }, write: function (value) { return encodeURIComponent(value).replace( /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent ) } }; /* eslint-enable no-var */ /* eslint-disable no-var */ function init(converter, defaultAttributes) { function set(key, value, attributes) { if (typeof document === 'undefined') { return } attributes = assign({}, defaultAttributes, attributes); if (typeof attributes.expires === 'number') { attributes.expires = new Date(Date.now() + attributes.expires * 864e5); } if (attributes.expires) { attributes.expires = attributes.expires.toUTCString(); } key = encodeURIComponent(key) .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent) .replace(/[()]/g, escape); var stringifiedAttributes = ''; for (var attributeName in attributes) { if (!attributes[attributeName]) { continue } stringifiedAttributes += '; ' + attributeName; if (attributes[attributeName] === true) { continue } /* Considers RFC 6265 section 5.2: ... 3. If the remaining unparsed-attributes contains a %x3B (";") character: Consume the characters of the unparsed-attributes up to, not including, the first %x3B (";") character. ... */ stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; } return (document.cookie = key + '=' + converter.write(value, key) + stringifiedAttributes) } function get(key) { if (typeof document === 'undefined' || (arguments.length && !key)) { return } /* To prevent the for loop in the first place assign an empty array in case there are no cookies at all. */ var cookies = document.cookie ? document.cookie.split('; ') : []; var jar = {}; for (var i = 0; i < cookies.length; i++) { var parts = cookies[i].split('='); var value = parts.slice(1).join('='); try { var foundKey = decodeURIComponent(parts[0]); jar[foundKey] = converter.read(value, foundKey); if (key === foundKey) { break } } catch (e) {} } return key ? jar[key] : jar } return Object.create({ set: set, get: get, remove: function (key, attributes) { set( key, '', assign({}, attributes, { expires: -1 }) ); }, withAttributes: function (attributes) { return init(this.converter, assign({}, this.attributes, attributes)) }, withConverter: function (converter) { return init(assign({}, this.converter, converter), this.attributes) } }, { attributes: { value: Object.freeze(defaultAttributes) }, converter: { value: Object.freeze(converter) } }) } var api = init(defaultConverter, { path: '/' }); /* eslint-enable no-var */ return api; }))) }, /* base64转blob */ base64ToBlob: function (dataurl) { var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); }, /* base64转File */ base64ToFile(dataurl, filename) { var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new File([u8arr], filename, { type: mime }); }, /* blob转file */ blobToFile: function (theBlob, fileName) { theBlob.lastModifiedDate = new Date(); theBlob.name = fileName; return theBlob; }, /* file转base64 */ asyncFileToBase64(file) { let reader = new FileReader(); reader.readAsDataURL(file); return new Promise(res => { reader.onload = function (e) { res(e.target.result); } }) }, /* 下载base64格式的数据 */ downloadBase64(fileName, base64Content) { let aLink = document.createElement('a') let blob = utils.base64ToBlob(base64Content) // new Blob([content]); let evt = document.createEvent('HTMLEvents') evt.initEvent('click', true, true) // initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为 aLink.download = fileName aLink.href = URL.createObjectURL(blob) // aLink.dispatchEvent(evt); aLink.click() } } function envCheck() { /* 脚本运行环境修复,兼容部分函数 GM_xmlhttpRequest x浏览器进行了兼容,调用方式为GM.xmlHttpRequest,但会检测是否同源请求,所以不可修改headers */ let checkStatus = true; let isFailedFunction = []; console.log("正在检测脚本环境..."); if (typeof $ != 'undefined') { window.$jq = $.noConflict(true); /* 为什么这么写,X浏览器加载jq会替换网页上的jq */ console.log(`check: %c $jq %c √ jQuery版本:${$jq.fn.jquery}`, "background:#24272A; color:#ffffff", "color:#00a5ff"); if ($jq.fn.jquery != "3.4.1") { console.log("jQuery加载错误,如果是非油猴加载本脚本方式,请放到网页加载完毕后执行"); return false; } if (typeof jQuery != 'undefined') { console.log(`check: %c $ %c √ 网站的jQuery版本:${$.fn ? $.fn.jquery : jQuery.fn.jquery}`, "background:#24272A; color:#ffffff", "color:#00a5ff"); } } else { checkStatus = false; isFailedFunction = isFailedFunction.concat("GM_xmlhttpRequest"); console.log("check: %c $ %c ×", "background:#24272A; color:#ffffff", "color:#f90000"); } if (typeof GM_xmlhttpRequest == "undefined") { if (typeof GM != "undefined" && typeof GM.xmlHttpRequest != "undefined") { window.GM_xmlhttpRequest_isRepair = false; window.GM_xmlhttpRequest = (param) => { GM.xmlHttpRequest(param); }; console.log("check: %c GM_xmlhttpRequest %c √ 替换成当前环境的GM中", "background:#24272A; color:#ffffff"); } else { window.GM_xmlhttpRequest_isRepair = true; isFailedFunction = isFailedFunction.concat("GM_xmlhttpRequest"); console.log(`check: %c GM_xmlhttpRequest %c 修复,该函数不存在,替换成ajax`, "background:#24272A; color:#ffffff", "background:#fff;"); window.GM_xmlhttpRequest = (f) => { console.log(`$jq.ajax请求 url: ${f.url}`); console.log(f); let headers_options = {}; let headers_options_key = [ "Accept-Charset", "Accept-Encoding", "Access-Control-Request-Headers", "Access-Control-Request-Method", "Connection", "Content-Length", "Cookie", "Cookie2", "Date", "DNT", "Expect", "Host", "Keep-Alive", "Origin", "Referer", "TE", "Trailer", "Transfer-Encoding", "Upgrade", "User-Agent", "Via" ]; if (f.headers != null) { Array.from(headers_options_key).forEach(item => { delete f.headers[item] }) } else { f.headers = {}; } $jq.ajax({ url: f.url, type: f.method, data: f.data, timeout: f.timeout, dataType: f.responseType, headers: headers_options, success: (r) => { f.onload(r) }, error: (r) => { if (r.status == 200) { f.onload(r) } else { f.onerror(r); } } }) } } } else { window.GM_xmlhttpRequest_isRepair = false; console.log("check: %c GM_xmlhttpRequest %c √", "background:#24272A; color:#ffffff", "color:#00a5ff"); } var loadNetworkResource = []; window.GM_asyncLoadScriptContent = (url, replaceStatus) => { /* 异步执行跨域js资源 js */ if (loadNetworkResource.indexOf(url) != -1) { console.log("已加载该js:", url); return } replaceStatus = replaceStatus == null ? true : replaceStatus; return new Promise(res => { GM_xmlhttpRequest({ url: url, method: "GET", async: false, timeout: 10000, onload: (r) => { let execStatus = false; let retText = r.responseText; if (replaceStatus) { retText = retText.replace(/\$/g, "$jq"); retText = retText.replace(/jQuery/g, "$jq"); } try { eval(retText); execStatus = true; loadNetworkResource = loadNetworkResource.concat(url); } catch (error) { console.log("eval执行失败" + error); execStatus = false; } /* try { window.eval(retText); execStatus = true; loadNetworkResource = loadNetworkResource.concat(url); }catch (error) { console.log("window.eval执行失败 " + error); execStatus = false; }*/ res(execStatus); }, onerror: () => { console.log("网络异常,加载JS失败", url); res(false); } }) }) } window.GM_asyncLoadScriptNode = (url) => { return new Promise(res => { let tempNode = document.createElement("script"); tempNode.setAttribute("src", url); document.head.append(tempNode); tempNode.onload = () => { res(); } }) } window.GM_asyncLoadStyleSheet = (url) => { /* 异步添加跨域css资源 */ if (loadNetworkResource.indexOf(url) != -1) { console.log("已加载该css:", url); return } loadNetworkResource = loadNetworkResource.concat(url); let cssNode = document.createElement("link"); cssNode.setAttribute("rel", "stylesheet"); cssNode.setAttribute("href", url); cssNode.setAttribute("type", "text/css"); document.head.append(cssNode); } if (typeof GM_getValue == "undefined") { window.GM_getValue = (key, defaultValue) => { let value = window.localStorage.getItem(key); if (typeof value == "string" && value.trim() != String()) { value = JSON.parse(value); } else if (defaultValue != null) { value = defaultValue; } return value }; console.log("check: %c GM_getValue %c √ 修复", "background:#24272A; color:#ffffff", "color:#00a5ff"); } else { console.log("check: %c GM_getValue %c √", "background:#24272A; color:#ffffff", "color:#00a5ff"); } if (typeof GM_setValue == "undefined") { window.GM_setValue = (key, value) => { window.localStorage.setItem(key, JSON.stringify(value)); }; console.log("check: %c GM_setValue %c √ 修复", "background:#24272A; color:#ffffff", "color:#00a5ff"); } else { console.log("check: %c GM_setValue %c √", "background:#24272A; color:#ffffff", "color:#00a5ff"); } if (typeof GM_deleteValue == "undefined") { window.GM_deleteValue = (key) => { window.localStorage.removeItem(key); }; console.log("check: %c GM_deleteValue %c √ 修复", "background:#24272A; color:#ffffff", "color:#00a5ff"); } else { console.log("check: %c GM_deleteValue %c √", "background:#24272A; color:#ffffff", "color:#00a5ff"); } if (typeof GM_addStyle == "undefined") { window.GM_addStyle = (styleText) => { let cssDOM = document.createElement("style"); cssDOM.setAttribute("type", "text/css"); cssDOM.innerHTML = styleText; document.head.appendChild(cssDOM); return cssDOM; }; console.log("check: %c GM_addStyle %c √ 修复", "background:#24272A; color:#ffffff", "color:#00a5ff"); } else { console.log("check: %c GM_addStyle %c √", "background:#24272A; color:#ffffff", "color:#00a5ff"); } if (typeof GM_setClipboard == "undefined") { window.GM_setClipboard = (text) => { let clipBoardDOM = document.createElement("input"); clipBoardDOM.type = "text"; clipBoardDOM.setAttribute("style", "opacity:0;position:absolute;"); clipBoardDOM.id = "whitesevClipBoardInput"; document.body.append(clipBoardDOM); let clipBoardInputNode = document.getElementById("whitesevClipBoardInput"); clipBoardInputNode.value = text; clipBoardInputNode.removeAttribute("disabled"); clipBoardInputNode.select(); document.execCommand('copy'); clipBoardInputNode.remove(); }; console.log("check: %c GM_setClipboard %c √ 修复", "background:#24272A; color:#ffffff", "color:#00a5ff"); } else { console.log("check: %c GM_setClipboard %c √", "background:#24272A; color:#ffffff", "color:#00a5ff"); } if (typeof unsafeWindow == "undefined") { window.unsafeWindow = window; console.log("check: %c unsafeWindow %c √ 修复", "background:#24272A; color:#ffffff", "color:#00a5ff"); } else { console.log("check: %c unsafeWindow %c √", "background:#24272A; color:#ffffff", "color:#00a5ff"); } if (checkStatus) { console.log(`脚本环境检测结果: 通过`); } else { let isFailedStr = ""; Array.from(isFailedFunction).forEach(item => { isFailedStr += (item + "、"); }) isFailedStr = isFailedStr.replace(/、$/, '') console.log(`脚本环境检测结果: ${isFailedStr}失败`); } return checkStatus; } const pc = { collectionForumPost() { /* 悬浮按钮-添加收藏帖子功能 */ if (!window.location.href.match(mt_config.rexp.forum_post)) { return; } var own_formhash = document.querySelector("#scform > input[type=hidden]:nth-child(1)").value; var collect_href_id = window.location.href.match(mt_config.rexp.forum_post_pc_page)[1]; var collect_href = 'https:\/\/bbs.binmt.cc\/home.php?mod=spacecp&ac=favorite&type=thread&id=' + collect_href_id + '&formhash=' + own_formhash; var new_collect = document.createElement('span'); var old_Suspended = document.getElementById("scrolltop"); new_collect.innerHTML = '<a href="' + collect_href + '" id="k_favorite" onclick="showWindow(this.id, this.href, \'get\', 0);" onmouseover="this.title = $(\'favoritenumber\').innerHTML + \' 人收藏\'" ><img src="https:\/\/s1.ax1x.com\/2020\/04\/29\/JTk3lD.gif" height="26" width="26" style="position:absolute;top:10px;left:11px"><\/a>'; old_Suspended.insertAdjacentElement('afterBegin', new_collect); }, detectUserOnlineStatus() { /* 探测用户在线状态 */ if (window.location.href.match(mt_config.rexp.forum_post_pc)) { var quanju = []; var cishu = 0; for (var sss = document.getElementsByClassName("pls favatar"), ll = 0; ll < sss.length; ll++) { var sendmessage = sss[ll].getElementsByClassName("comiis_o cl") if (sendmessage.length == 0) {} else { var sendmessageurl = sendmessage[0].getElementsByTagName('a')[1].href; let xhr = new XMLHttpRequest(); xhr.open("GET", sendmessageurl, false); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { let pattern = /正在.*]/g; let str = xhr.responseText; let newstr = str.match(pattern)[0]; quanju.push(newstr); } } xhr.send(); let offLineStaus = quanju[cishu].match('离线') ? true : false; cishu = cishu + 1; var onlineStatusImage = document.createElement('img'); onlineStatusImage.src = offLineStaus ? 'https://cdn-bbs.mt2.cn/static/image/smiley/doge/54.png' : 'https://cdn-bbs.mt2.cn/static/image/smiley/doge/35.png'; onlineStatusImage.smilied = offLineStaus ? '1353' : '1384'; onlineStatusImage.border = "0"; onlineStatusImage.style = 'float:right'; sss[ll].insertAdjacentElement('afterbegin', onlineStatusImage); } } } }, latestReleaseForumPost() { /* 最新发表 */ var latestReleaseNode = $jq(`<li id="latest_publication"><a href="https://bbs.binmt.cc/forum.php?mod=guide&view=newthread" hidefocus="true" title="最新发表">最新发表</a></li>`); $jq("#comiis_nv .wp.comiis_nvbox.cl ul").append(latestReleaseNode); if (window.location.href == "https://bbs.binmt.cc/forum.php?mod=guide&view=newthread") { $jq("#mn_forum_10").removeClass("a"); latestReleaseNode.find("a").css("background", 'url("https://cdn-bbs.mt2.cn/template/comiis_mi/img/nv_a.png") repeat-x 50% -50px'); } }, main() { /* 电脑版函数按顺序加载 */ popup2.toast = (text) => { if (typeof text == "string") { xtips.toast(text); } else { xtips.toast(text.text); } } tryCatch(pc.latestReleaseForumPost); /* tryCatch(pc.detectUserOnlineStatus); */ tryCatch(mobile.identifyLinks); tryCatch(pc.collectionForumPost); tryCatch(pc.quickReply); tryCatch(pc.showUserLevel); tryCatch(mobile.autoSignIn); }, quickReply() { /* 快捷回复 */ if (!window.location.href.match(mt_config.rexp.forum_post)) { return; } document.querySelector("#scrolltop > span:nth-child(2) > a").onclick = function () { showWindow('reply', this.href); setTimeout( 'document.querySelector("#moreconf").innerHTML=document.querySelector("#moreconf").innerHTML+\'<button type="button" id = "insertspace2" style="float: left;">一键空格<\/button>\';document.querySelector("#insertspace2").onclick=function(){document.querySelector("#postmessage").value=document.querySelector("#postmessage").value+" ";}', 200) } }, async repairPCNoLoadResource() { /* 修复电脑版未加载的js资源 */ await GM_asyncLoadScriptNode("https://cdn-bbs.mt2.cn/static/js/smilies.js?x6L", false); await GM_asyncLoadScriptNode("https://cdn-bbs.mt2.cn/static/js/common.js?hsy", false); }, showUserLevel() { /* 显示用户具体等级 */ var user_avatar = document.getElementsByClassName("pls favatar"); var i = 0; var user_level = "0级"; for (i = 0; i < user_avatar.length; i++) { var user_current_level = user_avatar[i].getElementsByTagName("em")[1].outerText; var user_info = user_avatar[i].getElementsByTagName("tr")[0]; var user_level_node = document.createElement("td"); switch (user_current_level) { case "幼儿园": user_level = "1级"; break; case "小学生": user_level = "2级"; break; case "初中生": user_level = "3级"; break; case "高中生": user_level = "4级"; break; case "大学生": user_level = "5级"; break; case "硕士生": user_level = "6级"; break; case "博士生": case "实习版主": case "版主": case "审核员": user_level = "7级"; break; case "博士后": case "超级版主": case "网站编辑": user_level = "8级"; break; case "管理员": case "信息监察员": user_level = "9级"; break; } user_level_node.innerHTML = '<p><a class="dj">' + user_level + '<\/a><\/p>Lv'; user_info.appendChild(user_level_node); } }, } const mobile = { autoExpendFullTextByForumPost() { /* 自动展开帖子内容 */ if (GM_getValue("v18") && location.href.match(mt_config.rexp.forum_post)) { GM_addStyle(` div.comiis_message.bg_f.view_one.b_b.cl.message > div.comiis_messages.comiis_aimg_show.cl{ max-height: inherit !important; overflow-y: inherit !important; position: inherit !important; } .comiis_lookfulltext_key, .comiis_lookfulltext_bg{ display: none !important; }`) } }, autoSignIn() { /* 签到 */ utils.cookie(); function checkLogin() { /* 检测是否登录(不可用) */ let pc_login = document.querySelector("#comiis_key"); let mobile_login_cookie = Cookies.get("cQWy_2132_auth"); console.log("账号cQWy_2132_auth: ", mobile_login_cookie ? (mobile_login_cookie.slice(0, 5) + "...") : mobile_login_cookie); return pc_login || mobile_login_cookie; } function getFormHash() { /* 获取账号的formhash */ let inputFormHash = top.document.querySelector("input[name=formhash]"); let sidenv_exit = top.document.querySelector("div[class=sidenv_exit]>a"); /* 退出按钮(登录(不可用)状态才有),电脑版的 */ let sidenv_exit_match = null; let comiis_recommend_addkey = top.document.querySelector("a.comiis_recommend_addkey"); /* 论坛浏览图片下的点赞按钮,获取formhash */ let comiis_recommend_addkey_match = null; inputFormHash = inputFormHash ? inputFormHash.value : null; if (sidenv_exit) { sidenv_exit_match = sidenv_exit.href.match(mt_config.rexp.formhash); sidenv_exit_match = sidenv_exit_match ? sidenv_exit_match[sidenv_exit_match.length - 1] : null; } if (comiis_recommend_addkey) { comiis_recommend_addkey_match = comiis_recommend_addkey.href.match(mt_config.rexp.hash); comiis_recommend_addkey_match = comiis_recommend_addkey_match ? comiis_recommend_addkey_match[comiis_recommend_addkey_match.length - 1] : null; } return inputFormHash || sidenv_exit_match || comiis_recommend_addkey_match; } function danmurun(run_time, con, line) { /* 弹幕 */ function randDanmu() { let icon = utils.randomArr(['', 's', 'e', 'w', 'a', 'h', 'https://cdn-bbs.mt2.cn/template/comiis_app/comiis/img/favicon.ico']); let type = utils.randomArr(['w', 'b']); let danmuinfo = ["已签到", "请刷新", "不要呆着了", "快点滴", "手机要爆炸了", "麻溜的", "说的就是你", "看什么看", "懂不懂自动签到的含金量啊", "别迷恋哥,哥只是个传说", "你不懂自动签到的含金量", "花会枯萎,自动签到永不凋零"]; if (con) { danmuinfo = danmuinfo.concat("恭喜你签到获取" + con + "金币奖励"); } if (line) { danmuinfo = danmuinfo.concat("你的签到排行为: 第 " + line); } let randTip = utils.randomArr(danmuinfo); xtip.danmu(randTip, { icon: icon, type: type, }); } return setInterval(function () { randDanmu(); }, run_time); } function signIn(_formhash_) { /* 签到 */ console.log("发送签到请求"); GM_xmlhttpRequest({ method: "get", url: "/k_misign-sign.html?operation=qiandao&format=button&formhash=" + _formhash_ + "&inajax=1&ajaxtarget=midaben_sign", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, timeout: 5000, onload: (r) => { console.log(r); GM_setValue("mt_sign", parseInt(utils.getFormatTime("yyyyMMdd"))); if (r.lastChild || typeof r == "string") { /* ajax函数版本 */ if (typeof r == "string") { popup2.toast({ "text": "签到: 成功" }); var intervalId = danmurun(450); setTimeout(function () { /* 10秒后关闭 */ clearInterval(intervalId); }, 50000); return; }; let signInContent = r.lastChild.firstChild.nodeValue; if (signInContent.indexOf("您已经被列入黑名单") != -1) { popup2.toast({ "text": "签到: 您已经被列入黑名单" }); return } if (signInContent.indexOf("今日已签" != -1)) { popup2.toast({ "text": "签到: 今日已签" }); return } } else { /* GM_xmlhttpRequest版本 */ let CDATA = r.responseText.match(/<\!\[CDATA\[([\s\S]*)\]\]>/); CDATA = CDATA[CDATA.length - 1]; let CDATA_Node = $jq("<div>" + CDATA + "</div>"); let content = CDATA_Node.text(); console.log(content); if (content.indexOf("您已经被列入黑名单") != -1) { popup2.toast({ "text": "签到: 您已经被列入黑名单" }); return } if (content.indexOf("今日已签") != -1) { popup2.toast({ "text": "签到: 今日已签" }); return } let signIn_con = CDATA_Node.find(".con"); /* 签到奖励 */ let signIn_line = CDATA_Node.find(".line"); /* 签到排名 */ if (signIn_con.length && signIn_line.length) { let con = signIn_con.text().match(/([0-9]+)金币/); let line = signIn_line.text().match(/([0-9]+)/); con = con[con.length - 1]; line = line[line.length - 1]; console.log(`金币${con},排名${line}`); popup2.toast({ "text": `<div style="display: flex;"><div style="align-self: center;margin-right: 20px;">签到</div><div>排名 ${line}<br>金币 ${con}</div></div>` }); var intervalId = danmurun(450, con, line); setTimeout(function () { /* 10秒后关闭 */ clearInterval(intervalId); popup2.toast_close(); }, 50000); return } popup2.toast({ "text": "签到: 未知结果,请查看控制台信息" }); } if (typeof r == "string") { /* 无油猴函数的版本的签到成功是没有返回值的 */ popup2.toast({ "text": "签到: 成功" }); var intervalId = danmurun(450); setTimeout(function () { /* 10秒后关闭 */ clearInterval(intervalId); popup2.toast_close(); }, 50000); return } }, onerror: (r) => { console.log(r); console.log("签到: 网络异常"); popup2.toast({ "text": "签到: 网络异常" }); } }) } if (!GM_getValue("v17")) { return; } if (!checkLogin()) { popup2.toast("当前尚未登录(不可用)账号"); return; } let formhash = getFormHash(); if (formhash == null) { if (document.querySelector("#comiis_picshowbox")) { /* 当前为评论区的看图模式 */ return } console.log("获取账号formhash失败"); popup2.toast({ "text": "获取账号formhash失败" }); return; } if (utils.getFormatTime("HH") == "23" && parseInt(utils.getFormatTime("mm")) >= 55) { /* 倒计时开启 */ console.log("开启倒计时自动签到"); let intervalId = setInterval(() => { let current_time = utils.getFormatTime("HH:mm:ss"); if (utils.getFormatTime("hh:mm") == "00:00") { signIn(formhash); clearInterval(intervalId); } else { popup2.toast(`倒计时: ${current_time}`); } }, 1000); return; } if (GM_getValue("mt_sign") == parseInt(utils.getFormatTime("yyyyMMdd"))) { return; } else { signIn(formhash); } }, blackHome: { showBlackHomeView: async () => { /* 显示小黑屋界面 */ if (typeof $jq.NZ_MsgBox == "undefined") { popup2.toast("加载NZMsgBox.js中"); await GM_asyncLoadScriptNode("https://gf.qytechs.cn/scripts/449562-nzmsgbox/code/NZMsgBox.js"); if (typeof $jq.NZ_MsgBox == "undefined") { popup2.toast("网络异常,加载NZMsgBox.js失败"); return; } else { console.log("成功加载NZMsgBox.js"); } } $jq.NZ_MsgBox.alert({ title: "小黑屋名单", content: "获取中", type: "", location: "center", buttons: { confirm: { text: "确定" } } }); let blacklistret = await mobile.blackHome.getBlackList(); if (blacklistret == null) { $jq(".msgcon").html("获取小黑屋名单失败,请重新获取"); return }; let blackListJSON = utils.jsonStrToObject(blacklistret)["data"]; let blackContent = ''; function jsonToArrayWithAddPropertyTime(data) { let _list_ = []; let _no_time_list_ = []; console.log(data); $jq.each(data, function (index, value) { let date = value["dateline"].match(/([0-9]{4}-[0-9]{1,2}-[0-9]{1,2}[\s]*[0-9]{1,2}:[0-9]{1,2})/g); if (date == null) { let _time_ = parseInt(Date.now() / 1000); let _time_after_count_ = 0; let sec_data = value["dateline"].match(/([0-9]+|半)[\s\S]*秒前/); /* xx|半秒前 */ let min_data = value["dateline"].match(/([0-9]+|半)[\s\S]*分钟前/); /* xx|半分钟前 */ let hour_data = value["dateline"].match(/([0-9]+|半)[\s\S]*小时前/); /* xx|半小时前 */ let yesterday_time_data = value["dateline"].match(/昨天[\s\S]*(\d{2}):(\d{2})/); /* 昨天 xx:xx */ let before_yesterday_time_data = value["dateline"].match(/前天[\s\S]*(\d{2}):(\d{2})/); /* 前天 xx:xx */ let day_data = value["dateline"].match(/([0-9]+|半)[\s\S]*天前/); /* xx天前 */ if (sec_data) { sec_data = sec_data[sec_data.length - 1]; sec_data = sec_data.replace(/半/g, 0.5); sec_data = parseFloat(sec_data); _time_after_count_ = _time_ - sec_data; } else if (min_data) { min_data = min_data[min_data.length - 1]; min_data = min_data.replace(/半/g, 0.5); min_data = parseFloat(min_data); _time_after_count_ = _time_ - min_data * 60; } else if (hour_data) { hour_data = hour_data[hour_data.length - 1]; hour_data = hour_data.replace(/半/g, 0.5); hour_data = parseFloat(hour_data); _time_after_count_ = _time_ - hour_data * 60 * 60; } else if (yesterday_time_data) { let yesterday_hour_data = yesterday_time_data[1]; let yesterday_min_data = yesterday_time_data[2]; _time_after_count_ = _time_ - 86400 - parseInt(yesterday_hour_data) * 3600 - parseInt(yesterday_min_data) * 60; } else if (before_yesterday_time_data) { let before_yesterday_hour_data = before_yesterday_time_data[1]; let before_yesterday_min_data = before_yesterday_time_data[2]; _time_after_count_ = _time_ - 86400 * 2 - parseInt(before_yesterday_hour_data) * 3600 - parseInt(before_yesterday_min_data) * 60; } else if (day_data) { day_data = day_data[day_data.length - 1]; day_data = day_data.replace(/半/g, 0.5); day_data = parseFloat(day_data); _time_after_count_ = _time_ - day_data * 60 * 60 * 24; } value["time"] = parseInt(_time_after_count_) * 1000; _list_ = _list_.concat(value); return } else { date = date[0] }; value["time"] = utils.formatDateStrToStamp(date); _list_ = _list_.concat(value); }); _list_.sort(utils.sortListByProperty("time", "desc")); if (_no_time_list_.length) { _no_time_list_.sort(utils.sortListByProperty("sortTime", "asc")); } _list_ = _no_time_list_.concat(_list_); return _list_; } let newBlacklist = jsonToArrayWithAddPropertyTime(blackListJSON); console.log(newBlacklist); $jq.each(newBlacklist, function (index, value) { let blackreson = (value["reason"] == "") ? "无" : value["reason"]; blackContent = blackContent + ` <tbody id="autolist"> <tr> <td class="k_misign_lu" style="text-align: center;overflow-wrap: break-word;width: 76px;"> <a href="home.php?mod=space&uid=` + value["uid"] + `&do=profile"> <img src="https://avatar-bbs.mt2.cn/uc_server/avatar.php?uid=` + value["uid"] + `&size=small"> </a> <div class="f_c" style="display: flex;justify-content: center;margin-top: 5px;word-break: break-word;"> <h4> <a href="home.php?mod=space&uid=` + value["uid"] + `&do=profile">` + value["username"] + `</a> </h4> </div> </td> <td class="k_misign_ll" style="width: 10px;"> <span></span> </td> <td class="k_misign_lc" style="max-width: 200px;"> <div class="f_c" style="display: flex;justify-content: space-between;"> <h4> <div class="y">操作时间: ` + value["dateline"] + `</div> </h4> </div> <div class="f_c" style="display: flex;justify-content: space-between;"> <p class="f_0">操作行为: ` + value["action"] + `</p> </div> <div class="f_c" style="display: flex;justify-content: space-between;"> <p class="f_0">过期时间: ` + value["groupexpiry"] + `</p> </div> <div class="f_c" style="display: flex;justify-content: space-between;"> <p class="f_0" style="color: #fc2a2a !important;">操作人员: ` + value["operator"] + `</p> </div> <div class="f_c" style="display: flex;justify-content: space-between;">操作理由: ` + blackreson + `</div> </td> </tr> <tr style="height:15px;"></tr> </tbody> `; /* console.log(value); */ }) let mainBlackContent = '<table id="misign_list" style="overflow: auto;height: inherit;margin: 15px 0px;width: 100%;">' + blackContent + "</table>"; $jq(".msgcon").html(mainBlackContent); $jq(".NZ-MsgBox-alert.NZ-MsgBox--motion").css("top", "100px"); $jq(".msgcon").css("height", "400px"); }, insertMobileBlackHomeButton: async function () { /* 插入手机版查看小黑屋的按钮 */ if ((window.location.href.match(mt_config.rexp.bbs) != null) && (GM_getValue("v30"))) { let comiis_left_Touch = document.createElement("li"); comiis_left_Touch.className = "comiis_left_Touch"; let black_home_ele = document.createElement("a"); black_home_ele.setAttribute("href", "javascript:;"); black_home_ele.className = "blacklist"; black_home_ele.innerHTML = ` <div class="styli_tit f_c"> <i class="comiis_font" style="color: #000;"></i> </div> <div class="flex">小黑屋</div>`; GM_addStyle(` .NZ-MsgBox-alert .msgcontainer .msgtitle { text-align: center !important; } #autolist .k_misign_lu img { width: 40px; height: 40px; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px; } .k_misign_lc .f_c{ margin: 5px 0px; } tbody#autolist, tbody#autolist tr { width: auto; }`) black_home_ele.onclick = () => { mobile.blackHome.showBlackHomeView(); } /* Array.from(document.querySelectorAll(".comiis_myinfo_list.bg_f.cl")).forEach((ele) => { if (ele.innerText.match(/消息提醒|资料设置|我的积分|我的勋章|我的道具/)) { ele.append(black_home_ele); return; } }) */ comiis_left_Touch.append(black_home_ele); $jq(".comiis_sidenv_box .sidenv_li .comiis_left_Touch.bdew").append(comiis_left_Touch); } }, getBlackList: async (cid) => { /* 获取黑名单列表 */ cid = cid == null ? "" : cid; return new Promise(res => { GM_xmlhttpRequest({ url: "https://bbs.binmt.cc/forum.php?mod=misc&action=showdarkroom&cid=" + cid + "&t=&ajaxdata=json", timeout: 5000, method: "GET", async: false, headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", }, onload: (r) => { res(r.responseText); }, onerror: (r) => { console.log(r); popup2.toast("网络异常,请重新获取"); res(); } }) }) } }, blacklistShieldUsersOrBlocks() { /* 黑名单-屏蔽用户或板块 */ if (!window.location.href.match(mt_config.rexp.home_space_url)) { return } var white_space_ele = document.createElement("div"); var black_list_ele = document.createElement("div"); white_space_ele.className = "styli_h cl"; black_list_ele.setAttribute("id", "blacklistallmain"); black_list_ele.className = "comiis_myinfo_list bg_f cl"; black_list_ele.innerHTML = `<li class="comiis_styli b_b cl"> <textarea name="blacklistuid" id="blacklistuid" placeholder="输入想要屏蔽的用户的uid,多个uid用英文逗号分隔,如1234,5678,9231"></textarea> <textarea name="blacklistplate" id="blacklistplate" placeholder="输入想要屏蔽的板块,多个板块用顿号分隔,如求助问答、休闲灌水"></textarea> <a href="javascript:void(0)" id="blacklistsave" class="comiis_flex comiis_styli bg_f b_t cl"> <div class="flex">保存</div> </a> </li>`; GM_addStyle(` #blacklistallmain{ height: 232px; } #blacklistallmain li.comiis_styli{ height: 180px; } #blacklistallmain #blacklistuid{ width: 90%; resize: none; opacity: 0.7; height: 70% !important; line-height: inherit; -webkit-appearance: none; border: none !important; font-size: 14px; vertical-align: middle; background-color: transparent; border-bottom: 3px solid #efefef !important; } #blacklistallmain #blacklistplate{ width: 90%; resize: none; opacity: 0.7; height: 30% !important; line-height: inherit; -webkit-appearance: none; border: none !important; font-size: 14px; vertical-align: middle; background-color: transparent; } #blacklistsave{ text-align: center; background: transparent !important; border-color: transparent !important; } `); let mt_commis_menu = document.getElementsByClassName("comiis_myinfo cl")[0]; mt_commis_menu.appendChild(white_space_ele); mt_commis_menu.appendChild(black_list_ele); mt_commis_menu.appendChild(white_space_ele); document.getElementById("blacklistuid").textContent = GM_getValue("blacklistuid") ? GM_getValue("blacklistuid") : ""; document.getElementById("blacklistplate").textContent = GM_getValue("blacklistplate") ? GM_getValue("blacklistplate") : ""; document.getElementById("blacklistsave").onclick = () => { let blackListUIDValue = document.getElementById("blacklistuid").value; let blackListPlateValue = document.getElementById("blacklistplate").value; GM_setValue("blacklistuid", blackListUIDValue); GM_setValue("blacklistplate", blackListPlateValue); popup2.toast("保存成功"); } }, chartBed: { ret_code: { 200: { 200: "删除成功" }, 500: { 101: "重复上传", 400: "请求被拒绝,token错误", 401: "请求被拒绝", }, 400: { 100: "删除失败,图片已删除", 101: "重复上传", } }, storage: { add: function (web, id_encoded, url, thumb_url, name) { let localData = GM_getValue("chartBedsImagesHistory") ? GM_getValue("chartBedsImagesHistory") : []; let saveData = localData.concat({ "web": web, "id_encoded": id_encoded, "url": url, "thumb_url": thumb_url, "name": name }); GM_setValue("chartBedsImagesHistory", saveData); }, delete: function (_web_, id_encoded) { let localData = GM_getValue("chartBedsImagesHistory") ? GM_getValue("chartBedsImagesHistory") : []; Array.from(localData).forEach((item, index) => { if (item["web"] == _web_ && item["id_encoded"] == id_encoded) { localData.splice(index, 1); GM_setValue("chartBedsImagesHistory", localData); return; } }) }, get: function () { return GM_getValue("chartBedsImagesHistory") ? GM_getValue("chartBedsImagesHistory") : []; } }, getAuthToken(url) { /* 获取图床的auth_token */ return new Promise(res => { GM_xmlhttpRequest({ url: url, method: "GET", headers: { 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Mobile Safari/537.36 Edg/94.0.992.38' }, onload: (r) => { let token = r.responseText.match(/PF.obj.config.auth_token[\s]*=[\s]*"(.+)";/i); if (token.length == 2) { popup2.toast("auth_token成功获取"); res(token[1]); } else { console.log(r); popup2.toast("auth_token获取失败"); res(null); } }, onerror: () => { popup2.toast("网络异常"); res(null) } }) }) }, login(url, user, pwd, auth_token) { /* 图床登录(不可用) */ return new Promise(res => { GM_xmlhttpRequest({ url: `${url}/login`, method: "POST", data: `login-subject=${user}&password=${pwd}&auth_token=${auth_token}`, headers: { "Content-Type": "application/x-www-form-urlencoded" }, onload: (e) => { console.log(e); if (e.status == 200 && e.responseText.match("注销")) { popup2.toast('登陆成功'); res(true); } else { popup2.toast('登录(不可用)失败'); res(false); } }, onerror: () => { popup2.toast('网络异常'); res(404); } }) }); }, uploadImage(url, auth_token, imageFile) { /* 上传图片请求 */ let res_data = { "imageUri": null, "json_data": null }; console.log(imageFile); let form = new FormData(); form.append("type", "file"); form.append("action", "upload"); form.append("timestamp", new Date().getTime()); form.append("auth_token", auth_token); form.append("nsfw", 0); form.append("source", imageFile); return new Promise(res => { GM_xmlhttpRequest({ url: `${url}/json`, method: "POST", data: form, async: false, responseType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Referer": `${url}/`, "Origin": url, }, onload: (r) => { let json_data = JSON.parse(r.responseText); console.log(json_data); let status_code = json_data["status_code"]; if (status_code == 200) { popup2.toast('上传成功'); let file_reader = new FileReader(); /* FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件 */ file_reader.readAsDataURL(imageFile); /* 读取图片的内容生成的base64编码的图 */ /* 读取完成后,执行该回调函数,它会返回读取的结果result */ file_reader.onload = (function () { let imageUri = this.result; /* 此时的图片已经存储到了result中 */ res_data["imageUri"] = imageUri; res_data["json_data"] = json_data; res(res_data); }); } else if (mobile.chartBed.ret_code[status_code] != null && mobile.chartBed.ret_code[status_code][json_data["error"]["code"]] != null) { popup2.toast(mobile.chartBed.ret_code[status_code][json_data["error"]["code"]]); res(res_data); } else { console.log(json_data); res(res_data); } }, onerror: (r) => { console.log(r.responseText); popup2.toast("网络异常"); res(res_data); } }) }) }, deleteImage(url, auth_token, id_encoded) { /* 删除图片请求 */ return new Promise(res => { GM_xmlhttpRequest({ url: `${url}/json`, method: "POST", data: `auth_token=${auth_token}&action=delete&single=true&delete=image&deleting[id]=${id_encoded}`, headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" }, onload: (e) => { let json_data = JSON.parse(e.responseText); let status_code = json_data["status_code"]; if (status_code == 200 && json_data["success"]["code"] == 200) { popup2.toast(mobile.chartBed.ret_code["200"]["200"]); res(true); } else if (status_code == 400 && json_data["error"]["code"] == 100) { popup2.toast(mobile.chartBed.ret_code["400"]["100"]); res(true); } else if (mobile.chartBed.ret_code[status_code] != null && mobile.chartBed.ret_code[status_code][json_data["error"]["code"]] != null) { popup2.toast(mobile.chartBed.ret_code[status_code][json_data["error"]["code"]]); res(false); } else { console.log(json_data); popup2.toast(json_data["error"]["message"]); res(false); } }, onerror: () => { popup2.toast('网络异常'); res(false); } }) }) }, popupUserPwd(chartbedname, register_url, callbackfun) { popup2.confirm({ text: ` <p style="padding: 10px 0px;">${chartbedname}</p> <div> <div style="display: flex;"> <p style="width: 60px;padding: 0;align-self: center;">账号</p> <input type="text" placeholder="请输入图床的账号" style=" -webkit-appearance: none; width: 100%; height: 2.5em; line-height: 1.4; font-size: inherit; border: none; outline: none; background-color: transparent; border-bottom: 1px solid #000000; " id="chartbed_user"> </div> <div style="display: flex;"> <p style="width: 60px;padding: 0;align-self: center;">密码</p> <input type="password" placeholder="请输入图床的密码" style=" -webkit-appearance: none; width: 100%; height: 2.5em; line-height: 1.4; font-size: inherit; border: none; outline: none; background-color: transparent; border-bottom: 1px solid #000000; " id="chartbed_pwd"> </div> <p><a style="color: #003ffa !important;" href="${register_url}" target="_blank">没有账号?点我去注册(不可用)!</a></p> </div>`, mask: true, only: true, callback: () => { callbackfun(); } }); } }, chatChartBed() { /* 聊天的图床 */ if (!window.location.href.match(mt_config.rexp.chat_url) || !GM_getValue("v40") ) { return }; GM_addStyle(` .comiis_post_imglist li.up_btn_kggzs a, .comiis_post_imglist li.up_btn_hello a, .comiis_post_imglist li.up_btn_z4a a{ display: block; width: 50px; height: 50px; line-height: 50px; padding: 4px; border-radius: 2px; border-style: dashed; } .comiis_post_imglist li.up_btn_kggzs a i, .comiis_post_imglist li.up_btn_hello a i, .comiis_post_imglist li.up_btn_z4a a i { position: absolute; top: 11px; left: 5px; z-index: 8; font-size: 26px; width: 50px; height: 50px; line-height: 50px; text-align: center; } .comiis_post_imglist li.up_btn_kggzs a input, .comiis_post_imglist li.up_btn_hello a input, .comiis_post_imglist li.up_btn_z4a a input { position:absolute; top:11px; left:5px; height:50px; width:50px; z-index:10; opacity:0; } .comiis_post_imglist li .delImg { position:absolute; top:-5px; left:-5px } .comiis_post_imglist li .delImg i { font-size:24px; background:#fff; border-radius:50% } .imgboxlist{ height: 170px; overflow-y: auto; } .menuclicked{ background: #fff; } #filedata_kggzs, #filedata_hello, #filedata_z4a{ display: none; } `); function chatKGChartBed() { /* 聊天快捷图片上传康哥图床 */ let chartBedUrl = "https://img.kggzs.cn/api/v1"; let chartBedUser = GM_getValue("KggzsChartBedUser"); let chartBedPwd = GM_getValue("KggzsChartBedPwd"); let chartBedToken = null; let loginStatus = false; /* 登录(不可用)状态 */ let tokenStatus = false; /* token状态 */ let code = { 401: "未登录(不可用)或授权失败", 403: "管理员关闭了接口功能", 429: "超出请求配额,请求受限", 500: "服务端出现异常" } function getToken() { return new Promise(res => { let formData = new FormData(); formData.append("email", chartBedUser); formData.append("password", chartBedPwd); GM_xmlhttpRequest({ url: `${chartBedUrl}/tokens`, method: "POST", data: formData, headers: { "Accept": "application/json" }, onload: (r) => { if (code[r.status] != null) { popup2.toast(code[r.status]); res(null); return; } let json_data = JSON.parse(r.responseText); if (json_data["status"]) { popup2.toast("token成功获取"); res(json_data["data"]["token"]); } else { popup2.toast(json_data["message"]); res(null); } }, onerror: () => { popup2.toast("网络异常"); res(null); } }) }) } function uploadImage(imageFile) { let res_data = { "imageUri": null, "json_data": null }; let form = new FormData(); form.append("strategy_id", 3); form.append("file", imageFile); return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/upload`, method: "POST", data: form, async: false, responseType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Authorization": `Bearer ${chartBedToken}`, }, onload: (r) => { if (code[r.status] != null) { popup2.toast(code[r.status]); res(res_data); return; } let json_data = JSON.parse(r.responseText); console.log(json_data); if (json_data["status"]) { popup2.toast('上传成功'); let file_reader = new FileReader(); /* FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件 */ file_reader.readAsDataURL(imageFile); /* 读取图片的内容生成的base64编码的图 */ /* 读取完成后,执行该回调函数,它会返回读取的结果result */ file_reader.onload = (function () { let imageUri = this.result; /* 此时的图片已经存储到了result中 */ res_data["imageUri"] = imageUri; res_data["json_data"] = json_data; res(res_data); }); } else { console.log(json_data); popup2.toast(json_data["message"]); res(res_data); } }, onerror: (r) => { popup2.toast("网络异常"); res(res_data); } }) }) } function deleteImage(imageKey) { return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/images/:${imageKey}`, method: "DELETE", async: false, data: JSON.stringify({ "key": "" }), responseType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Referer": `${chartBedUrl}/`, "Authorization": `Bearer ${chartBedToken}`, "Origin": chartBedUrl, }, onload: (r) => { if (code[r.status] != null) { popup2.toast(code[r.status]); res(res_data); return; } let json_data = JSON.parse(r.responseText); console.log(json_data); }, onerror: (r) => { popup2.toast("网络异常"); res(res_data); } }) }) } function clearData() { chartBedUser = ""; chartBedPwd = ""; chartBedToken = null; loginStatus = false; tokenStatus = false; GM_deleteValue("KggzsChartBedUser"); GM_deleteValue("KggzsChartBedPwd"); } $jq(document).on("click", "#imglist_kggzs .up_btn_kggzs a", async function () { if (tokenStatus) { popup2.toast('正在配置中...'); return; } if (!chartBedUser || !chartBedPwd) { let loginCallBack = () => { let user = $jq("#chartbed_user").val().trim(); let pwd = $jq("#chartbed_pwd").val().trim(); if (user && pwd) { GM_setValue("KggzsChartBedUser", user); GM_setValue("KggzsChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup2.toast('设置完毕,请重新点击'); popup2.confirm_close(); } else { popup2.toast("账号或密码不能为空"); } } mobile.chartBed.popupUserPwd("康哥图床", "https://img.kggzs.cn/register", loginCallBack); } else if (chartBedToken == null || !loginStatus) { popup2.mask_loading_show(); tokenStatus = true; popup2.toast('正在配置token'); chartBedToken = await getToken(); popup2.mask_close(); console.log("token:" + chartBedToken); if (chartBedToken != null) { $jq("#filedata_kggzs").click(); } else { clearData(); } tokenStatus = false; } else { $jq("#filedata_kggzs").click(); } }); $jq(document).on("change", "#filedata_kggzs", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup2.mask_loading_show(); popup2.toast("上传图片中...请稍后"); console.log(`图片数量:${chooseImageFiles.length}`); let uploadFileAwaitFunction = async (params) => { let imageFile = chooseImageFiles[params[0]]; let uploadImageReturn = await uploadImage(imageFile); if (uploadImageReturn["json_data"] != null) { console.log(uploadImageReturn); let image_id_encoded = uploadImageReturn["json_data"]["data"]["key"]; let image_url = uploadImageReturn["json_data"]["data"]["links"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["data"]["links"]["thumbnail_url"]; let image_name = uploadImageReturn["json_data"]["data"]["origin_name"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = `<li> <span class="delImg" id-encode="${image_id_encoded}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">插入</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${image_url}][img]${image_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${image_name}" src="${image_uri}" class="vm b_ok"></a> </span> <input type="hidden" name=""> </li>`; $jq("#imglist_kggzs").append($jq(uploadImageHTML)); mobile.chartBed.storage.add("kggzs", image_id_encoded, image_url, image_thumb_url, image_name); } }; let completeFunction = () => { popup2.mask_close(); $jq("#filedata_kggzs").val(""); } utils.asyncArrayForEach(chooseImageFiles, uploadFileAwaitFunction, completeFunction); }); $jq(document).on("click", "#imglist_kggzs .delImg", async function (e) { e.preventDefault(); e.currentTarget.parentElement.remove(); /* popup2.toast('删除中,请稍后'); let id_encoded = e.currentTarget.getAttribute("id-encode"); if(!id_encoded){ popup2.toast('获取id_encoded失败,请自行去Hello图床删除'); return; } let deleteStatus = await deleteImage(key); if(deleteStatus){ e.currentTarget.parentElement.remove(); mobile.chartBed.storage.delete("kggzs",id_encoded); } */ }) } function chatHelloChartBed() { /* 聊天快捷图片上传Hello图床 */ let chartBedUrl = "https://www.helloimg.com"; let chartBedUser = GM_getValue("HelloChartBedUser"); let chartBedPwd = GM_getValue("HelloChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; /* 登录(不可用)状态 */ let authTokenStatus = false; /* authToken状态 */ let clearData = () => { GM_deleteValue("HelloChartBedUser"); GM_deleteValue("HelloChartBedPwd"); loginStatus = false; authTokenStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } $jq(document).on("click", "#imglist_hello .up_btn_hello a", async function () { if (authTokenStatus) { popup2.toast('正在配置中...'); return; } if (!chartBedUser || !chartBedPwd) { let loginCallBack = () => { let user = $jq("#chartbed_user").val().trim(); let pwd = $jq("#chartbed_pwd").val().trim(); if (user && pwd) { GM_setValue("HelloChartBedUser", user); GM_setValue("HelloChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup2.toast('设置完毕,请重新点击'); popup2.confirm_close(); } else { popup2.toast("账号或密码不能为空"); } } mobile.chartBed.popupUserPwd("Hello图床", "https://www.helloimg.com/signup", loginCallBack); } else if (chartBedAuthToken == null || !loginStatus) { authTokenStatus = true; popup2.mask_loading_show(); popup2.toast('正在配置auth_token'); chartBedAuthToken = await mobile.chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup2.toast('正在登录(不可用)Hello图床'); let retloginStatus = await mobile.chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); popup2.mask_close(); if (retloginStatus) { loginStatus = true; $jq("#filedata_hello").click(); } else if (retloginStatus == false) { clearData(); } } popup2.mask_close(); authTokenStatus = false; } else { $jq("#filedata_hello").click(); } }) $jq(document).on("change", "#filedata_hello", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup2.mask_loading_show(); popup2.toast("上传图片中...请稍后"); let uploadFileAwaitFunction = async (params) => { let imageFile = chooseImageFiles[params[0]]; let uploadImageReturn = await mobile.chartBed.uploadImage(chartBedUrl, chartBedAuthToken, imageFile); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = `<li> <span class="delImg" id-encode="${image_id_encoded}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">插入</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${image_url}][img]${image_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${image_name}" src="${image_uri}" class="vm b_ok"></a> </span> <input type="hidden" name=""> </li>`; $jq("#imglist_hello").append($jq(uploadImageHTML)); mobile.chartBed.storage.add("hello", image_id_encoded, image_url, image_thumb_url, image_name); } } let completeFunction = () => { popup2.mask_close(); $jq("#filedata_hello").val(""); } utils.asyncArrayForEach(chooseImageFiles, uploadFileAwaitFunction, completeFunction); }) $jq(document).on("click", "#imglist_hello .delImg", async function (e) { e.preventDefault(); popup2.mask_loading_show(); popup2.toast("删除中,请稍后"); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup2.mask_close(); popup2.toast('获取id_encoded失败,请自行去Hello图床删除'); return; } let deleteStatus = await mobile.chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); popup2.mask_close(); if (deleteStatus) { $jq(this).parent().remove(); mobile.chartBed.storage.delete("hello", id_encoded); } }) } function chatZ4AChartBed() { /* 聊天快捷图片上传Z4A图床 */ let chartBedUrl = "https://www.z4a.net"; let chartBedUser = GM_getValue("Z4AChartBedUser"); let chartBedPwd = GM_getValue("Z4AChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; /* 登录(不可用)状态 */ let authTokenStatus = false; /* authToken状态 */ let clearData = () => { GM_deleteValue("Z4AChartBedUser"); GM_deleteValue("Z4AChartBedPwd"); loginStatus = false; authTokenStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } $jq(document).on("click", "#imglist_z4a .up_btn_z4a a", async function () { if (authTokenStatus) { popup2.toast('正在配置中...'); return; } if (!chartBedUser || !chartBedPwd) { let loginCallBack = () => { let user = $jq("#chartbed_user").val().trim(); let pwd = $jq("#chartbed_pwd").val().trim(); if (user && pwd) { GM_setValue("Z4AChartBedUser", user); GM_setValue("Z4AChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup2.toast('设置完毕,请重新点击'); popup2.confirm_close(); } else { popup2.toast("账号或密码不能为空"); } } mobile.chartBed.popupUserPwd("Z4A图床", "https://www.z4a.net/signup", loginCallBack); } else if (chartBedAuthToken == null || !loginStatus) { popup2.mask_loading_show(); authTokenStatus = true; popup2.toast('正在配置auth_token'); chartBedAuthToken = await mobile.chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup2.toast('正在登录(不可用)Z4A图床'); let retloginStatus = await mobile.chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); popup2.mask_close(); if (retloginStatus) { loginStatus = true; $jq("#filedata_z4a").click(); } else if (retloginStatus == false) { clearData(); } } popup2.mask_close(); authTokenStatus = false; } else { $jq("#filedata_z4a").click(); } }) $jq(document).on("change", "#filedata_z4a", async (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup2.mask_loading_show(); popup2.toast("上传图片中...请稍后"); let uploadFileAwaitFunction = async (params) => { console.log("上传图片:" + chooseImageFiles[params[0]]); let uploadImageReturn = await mobile.chartBed.uploadImage(chartBedUrl, chartBedAuthToken, chooseImageFiles[params[0]]); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = `<li> <span class="delImg" id-encode="${image_id_encoded}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">插入</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${image_url}][img]${image_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${image_name}" src="${image_uri}" class="vm b_ok"></a> </span> <input type="hidden" name=""> </li>`; $jq("#imglist_z4a").append($jq(uploadImageHTML)); mobile.chartBed.storage.add("z4a", image_id_encoded, image_url, image_thumb_url, image_name); } } let completeFunction = () => { popup2.mask_close(); $jq("#filedata_z4a").val(""); } utils.asyncArrayForEach(chooseImageFiles, uploadFileAwaitFunction, completeFunction); }) $jq(document).on("click", "#imglist_z4a .delImg", async function (e) { e.preventDefault(); popup2.mask_loading_show(); popup2.toast("删除中,请稍后"); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup2.mask_close(); popup2.toast('获取id_encoded失败,请自行去Z4A图床删除'); return; } let deleteStatus = await mobile.chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); popup2.mask_close(); if (deleteStatus) { $jq(this).parent().remove(); mobile.chartBed.storage.delete("z4a", id_encoded); } }) } function chatHistoryChartBedImages() { /* 所有图床历史上传过的图片 */ let historyImages = mobile.chartBed.storage.get(); $jq.each(historyImages, (i) => { let _web = historyImages[i]["web"]; let _url = historyImages[i]["url"]; let _thumb_url = historyImages[i]["thumb_url"]; let _name = historyImages[i]["name"]; let _imageHTML = ` <li> <span class="delImg" t-index="${i}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">${_web}</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${_url}][img]${_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${_name}" data-src="${_thumb_url}" class="vm b_ok"></a> </span> <input type="hidden" name="${_name}"> </li> `; $jq("#imglist_history").append($jq(_imageHTML)); }) $jq("#menu_chartbed_history").on("click", function () { $jq.each($jq("#imglist_history li img"), (i, v) => { if (!v.getAttribute("src")) { v.setAttribute("src", v.getAttribute("data-src")); } }) }) $jq("#imglist_history").on("click", ".delImg", async (e) => { e.preventDefault(); let _t_index = e.currentTarget.getAttribute("t-index"); let imageItem = historyImages[_t_index]; let web = imageItem["web"]; let id_encoded = imageItem["id_encoded"]; e.currentTarget.parentElement.remove(); mobile.chartBed.storage.delete(web, id_encoded); }) } let imgBtn = `<a href="javascript:;" class="comiis_pictitle"><i class="comiis_font"></i></a>`; let menu = `<div class="comiis_minibq bg_f cl" style="display: none;"><div class="imgboxlist"></div><div class="bqbox_t bg_e cl"><ul id="comiis_img_chartbed_key"></ul></div></div>`; $jq(".styli_tit.comiis_post_ico.f_c.cl").append($jq(imgBtn)); $jq("#comiis_post_tab").append($jq(menu)); let imgUploadBtn = ` <div class="comiis_upbox kggzschartbed" style=""> <ul id="imglist_kggzs" class="comiis_post_imglist cl"> <li class="up_btn_kggzs"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_kggzs" accept="image/*""> </li> </ul> </div> <div class="comiis_upbox hellochartbed" style="display:none;"> <ul id="imglist_hello" class="comiis_post_imglist cl"> <li class="up_btn_hello"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_hello" accept="image/*""> </li> </ul> </div> <div class="comiis_upbox z4achartbed" style="display:none;"> <ul id="imglist_z4a" class="comiis_post_imglist cl"> <li class="up_btn_z4a"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_z4a" accept="image/*""> </li> </ul> </div> <div class="comiis_upbox chartbedhistory" style="display:none;"> <ul id="imglist_history" class="comiis_post_imglist cl"> </ul> </div> `; let imgMenu = ` <li class="bg_f"><a href="javascript:;" id="menu_kggzs" class="">康哥图床</a></li> <li><a href="javascript:;" id="menu_hello" class="">hello图床</a></li> <li><a href="javascript:;" id="menu_z4a" class="">z4a图床</a></li> <li><a href="javascript:;" id="menu_chartbed_history" class="">历史图片</a></li> `; $jq("#comiis_img_chartbed_key").append($jq(imgMenu)); $jq(".comiis_minibq .imgboxlist").append($jq(imgUploadBtn)); $jq("#comiis_img_chartbed_key li").on("click", function () { $jq("#comiis_img_chartbed_key li").removeClass("bg_f"); $jq(this).addClass("bg_f"); $jq("#comiis_post_tab .imgboxlist .comiis_upbox").hide().eq($jq(this).index()).fadeIn(); }) if (GM_getValue("chartBedsImagesHistory") == undefined) { GM_setValue("chartBedsImagesHistory", []); } tryCatch(chatKGChartBed); tryCatch(chatHelloChartBed); tryCatch(chatZ4AChartBed); tryCatch(chatHistoryChartBedImages); }, codeQuoteCopyBtn() { /* 代码块复制按钮 */ if (!GM_getValue("v46") && !window.location.href.match(mt_config.rexp.forum_post) ) { return }; let comiis_blockcode = $jq(".comiis_blockcode.comiis_bodybg"); $jq.each(comiis_blockcode, (index, value) => { if (!value.getAttribute("data-copy")) { value.setAttribute("data-copy", true); let tempDivNode = document.createElement("div"); tempDivNode.setAttribute("style", "height: 34px;margin: 14px 0px;"); let btnSpanNode = document.createElement("span"); btnSpanNode.className = "reader-copy-button"; btnSpanNode.setAttribute("style", "background: #000;background-size: cover;background-repeat: no-repeat;background-position: 0;color: #fff;line-height: 40px;display: block;position: absolute;text-align: center;border-radius: 5px;cursor: pointer;right: auto!important;font-size: 15px;width: 70px;user-select: none;"); btnSpanNode.innerHTML = ` <i style="display: inline-block;margin-right: 6px;width: 16px;height: 16px;background-size: cover;vertical-align: sub;user-select: none;"> <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>复制按钮</title> <defs> <rect id="path-1" x="0" y="0" width="16" height="16"></rect> </defs> <g id="阅读页复制-拦截" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g> <mask id="mask-2" fill="white"> <use xlink:href="#path-1"></use> </mask> <g id="矩形"></g> <path d="M4.11794319,3.55555556 L9.51168644,3.55555556 C10.4768443,3.55555556 11.2592593,4.33797056 11.2592593,5.30312837 L11.2592593,13.067242 C11.2592593,14.0323998 10.4768443,14.8148148 9.51168644,14.8148148 L4.11794319,14.8148148 C3.15278537,14.8148148 2.37037037,14.0323998 2.37037037,13.067242 L2.37037037,5.30312837 C2.37037037,4.33797056 3.15278537,3.55555556 4.11794319,3.55555556 Z" id="矩形" stroke="#DFDFDF" stroke-width="1.45631068" mask="url(#mask-2)"></path> <path d="M5.03703704,0.888888889 L12.1481481,0.888888889 C13.1299877,0.888888889 13.9259259,1.68482711 13.9259259,2.66666667 L13.9259259,12.7407407" id="形状" stroke="#DFDFDF" stroke-width="1.45631068" mask="url(#mask-2)"></path> </g> </g> </svg> </i>复制`; tempDivNode.append(btnSpanNode); tempDivNode.onclick = () => { popup2.toast("已复制代码"); GM_setClipboard(value.outerText || value.innerText); } value.before(tempDivNode); } else { console.log("已创建复制按钮"); } }) }, commentsAddReviews() { /* 评论区添加点评功能 */ if (GM_getValue("v6") && location.href.match(mt_config.rexp.forum_post)) { var hongbao = document.getElementsByClassName("bottom_zhan y"); if (hongbao.length == 0) {} else { var cishu2 = 0; var replyhref = hongbao[cishu2].getElementsByTagName('a')[0].href; var page = replyhref.match(mt_config.rexp.forum_post_page)[1]; /* console.log(page); */ for (cishu2 = 0; cishu2 < hongbao.length; cishu2++) { if (hongbao[cishu2].children.length == 1) { var rewardhref = hongbao[cishu2].getElementsByTagName('a')[0].href.replace('mod=post&', 'mod=misc&'); rewardhref = rewardhref.replace("action=reply&", "action=comment&"); var reviews_href = rewardhref + '&extra=page%3D1&page=' + page; let reviews_pid = hongbao[cishu2].parentElement.parentElement.id.replace("pid", "&pid="); reviews_href = reviews_href + reviews_pid; /* console.log(rewardhref) */ var oa = document.createElement('a'); var ob = document.createElement('i'); var lm = document.getElementsByClassName("bottom_zhan y")[cishu2]; oa.href = reviews_href; oa.className = "f_c dialog"; ob.style = "content: url(https://s1.ax1x.com/2020/04/26/Jcq8VU.png);height: 15px;"; ob.className = "comiis_font mt_review"; ob.innerHTML = ""; oa.appendChild(ob); let review_username = hongbao[cishu2].parentElement.parentElement.getElementsByClassName("top_user f_b")[0].text; oa.onclick = function () { let click_time = Date.now(); var mt_interval = setInterval(function () { let run_time = parseInt((Date.now() - click_time) / 1000); if (run_time >= 5) { console.log("超时"); clearInterval(mt_interval); } else if (document.querySelector("div[id=ntcmsg_popmenu]>div>span.f_c") != null) { console.log("存在,清理定时器"); console.log("点评用户:", review_username); console.log("该对象出现用时:", run_time); try { document.querySelector("div[id=ntcmsg_popmenu]>div>span.f_c").innerText = "点评 " + review_username; } catch (err) { console.log("修改点评失败", err); } clearInterval(mt_interval); } }, 100) } lm.insertAdjacentElement('afterBegin', oa); } else { console.log("已有点评按钮,无需再次添加"); } } } } }, editorChartBed() { /* 编辑器的图床 */ function chartbedByMT() { /* 论坛图床-修复点击上传和点击插入功能 */ GM_addStyle(` #imglist .p_img a{ float: left; height: 36px; } #imglist .del a{ padding: 0; } `); $jq("#imglist .up_btn").append($jq("#filedata")); $jq(document).on("click", "#imglist .up_btn a", function (e) { $jq(this).next().click(); }) $jq(document).on("click", "#imglist .p_img a", function (e) { let obj = $jq(this); if (obj.attr("onclick") == null) { let img_id = obj.find('img').attr("id").replace("aimg_", ""); comiis_addsmilies("[attachimg]" + img_id + "[/attachimg]"); } }) } function chartbedByKggzs() { /* 编辑器图片上传 康哥图床 */ GM_addStyle(` #imglist_kggzs .delImg{ position: absolute; top: -5px; left: -5px; } `); let chartBedUrl = "https://img.kggzs.cn/api/v1"; let chartBedUser = GM_getValue("KggzsChartBedUser"); let chartBedPwd = GM_getValue("KggzsChartBedPwd"); let chartBedToken = null; let code = { 401: "未登录(不可用)或授权失败", 403: "管理员关闭了接口功能", 429: "超出请求配额,请求受限", 500: "服务端出现异常" } function getToken() { return new Promise(res => { let formData = new FormData(); formData.append("email", chartBedUser); formData.append("password", chartBedPwd); GM_xmlhttpRequest({ url: `${chartBedUrl}/tokens`, method: "POST", data: formData, headers: { "Accept": "application/json" }, onload: (r) => { if (code[r.status] != null) { popup2.toast(code[r.status]); res(null); return; } let json_data = JSON.parse(r.responseText); if (json_data["status"]) { popup2.toast("token成功获取"); res(json_data["data"]["token"]); } else { popup2.toast(json_data["message"]); res(null); } }, onerror: () => { popup2.toast("网络异常"); res(null); } }) }) } function uploadImage(imageFile) { let res_data = { "imageUri": null, "json_data": null }; let form = new FormData(); form.append("strategy_id", 3); form.append("file", imageFile); return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/upload`, method: "POST", data: form, async: false, responseType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Authorization": `Bearer ${chartBedToken}`, }, onload: (r) => { if (code[r.status] != null) { popup2.toast(code[r.status]); res(res_data); return; } if (r.responseText.match("502 Bad Gateway")) { popup2.toast("获取返回结果502失败"); res(res_data); return } let json_data = JSON.parse(r.responseText); console.log(json_data); if (json_data["status"]) { popup2.toast('上传成功'); let file_reader = new FileReader(); /* FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件 */ file_reader.readAsDataURL(imageFile); /* 读取图片的内容生成的base64编码的图 */ /* 读取完成后,执行该回调函数,它会返回读取的结果result */ file_reader.onload = (function () { let imageUri = this.result; /* 此时的图片已经存储到了result中 */ res_data["imageUri"] = imageUri; res_data["json_data"] = json_data; res(res_data); }); } else { console.log(json_data); popup2.toast(json_data["message"]); res(res_data); } }, onerror: (r) => { popup2.toast("网络异常"); res(res_data); } }) }) } function deleteImage(imageKey) { return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/images/:${imageKey}`, method: "DELETE", async: false, data: JSON.stringify({ "key": "" }), responseType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Authorization": `Bearer ${chartBedToken}`, }, onload: (r) => { if (code[r.status] != null) { popup2.toast(code[r.status]); res(res_data); return; } let json_data = JSON.parse(r.responseText); console.log(json_data); }, onerror: (r) => { popup2.toast("网络异常"); res(res_data); } }) }) } function clearData() { chartBedUser = ""; chartBedPwd = ""; chartBedToken = null; GM_deleteValue("KggzsChartBedUser"); GM_deleteValue("KggzsChartBedPwd"); } function checkLogin() { return new Promise(async (res) => { if (!chartBedUser || !chartBedPwd) { let loginCallBack = () => { let user = $jq("#chartbed_user").val().trim(); let pwd = $jq("#chartbed_pwd").val().trim(); if (user && pwd) { GM_setValue("KggzsChartBedUser", user); GM_setValue("KggzsChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup2.toast('设置完毕,请重新点击'); popup2.confirm_close(); res(false); } else { popup2.toast("账号或密码不能为空"); } } mobile.chartBed.popupUserPwd("康哥图床", "https://img.kggzs.cn/register", loginCallBack); } else if (chartBedToken == null) { popup2.mask_loading_show(); popup2.toast('正在配置token'); chartBedToken = await getToken(); popup2.mask_close(); console.log("token:" + chartBedToken); if (chartBedToken != null) { res(true); } else { clearData(); res(false); } } else { res(false); } }) } $jq(document).on("click", "#imglist_kggzs .up_btn a", async function () { $jq("#filedata_kggzs").val(""); $jq("#filedata_kggzs").click(); }); $jq(document).on("change", "#filedata_kggzs", async (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; let needUploadImageArray = []; let needUploadImageFileArray = []; let uploadFileAwaitFunction = async (params) => { let imageFile = chooseImageFiles[params[0]]; let uploadImageReturn = await uploadImage(imageFile); if (uploadImageReturn["json_data"] != null) { console.log(uploadImageReturn); let image_id_encoded = uploadImageReturn["json_data"]["data"]["key"]; let image_url = uploadImageReturn["json_data"]["data"]["links"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["data"]["links"]["thumbnail_url"]; let image_name = uploadImageReturn["json_data"]["data"]["origin_name"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = `<li> <span class="delImg" id-encode="${image_id_encoded}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">插入</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${image_url}][img]${image_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${image_name}" src="${image_uri}" class="vm b_ok"></a> </span> <input type="hidden" name=""> </li>`; $jq("#imglist_kggzs").append($jq(uploadImageHTML)); mobile.chartBed.storage.add("kggzs", image_id_encoded, image_url, image_thumb_url, image_name); } } let completeFunction = () => { popup2.mask_close(); $jq("#filedata_kggzs").val(""); } let waterMarkAwaitFunction = async () => { popup2.mask_loading_show(); Promise.all( Array.from(chooseImageFiles).map(async (item, index) => { if (item.type === "image/gif") {/* 不支持对GIF添加水印 */ let image_base64 = await utils.asyncFileToBase64(item); needUploadImageArray = needUploadImageArray.concat(image_base64); needUploadImageFileArray = needUploadImageFileArray.concat(item); } else { popup2.toast(`添加水印 ${index+1}/${chooseImageFiles.length}`); var watermark = new Watermark(); await watermark.setFile(item); watermark.addText({ "text": [GM_getValue("chartBedWaterMarkText", "MT论坛")], "fontSize": GM_getValue("chartBedWaterMarkFontSize"), "color": GM_getValue("chartBedWaterMarkFontColor"), "globalAlpha": GM_getValue("chartBedWaterGlobalAlpha"), "rotateAngle": GM_getValue("chartBedWaterMarkRotationAngle"), "xMoveDistance": GM_getValue("chartBedWaterXMoveDistance"), "yMoveDistance": GM_getValue("chartBedWaterYMoveDistance") }); needUploadImageArray = needUploadImageArray.concat(watermark.render("png")); needUploadImageFileArray = needUploadImageFileArray.concat(utils.base64ToFile(watermark.render("png"), "WaterMark_" + item.name)); } }) ).then(async () => { chooseImageFiles = needUploadImageFileArray; popup2.mask_close(); if (GM_getValue("chartBedWaterMarkAutoDefault")) { let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传水印图片中...请稍后"); console.log(`图片数量:${needUploadImageFileArray.length}`); utils.asyncArrayForEach(needUploadImageFileArray, uploadFileAwaitFunction, completeFunction); return null; } } let renderHTML = ""; Array.from(needUploadImageArray).forEach(item => { renderHTML = renderHTML + '<img src="' + item + '">'; }) popup2.confirm({ text: `<style> .dialogbox.popup2-popmenu { width: 80vw; height: 55vh; } #popup2-confirm, #popup2-confirm .comiis_tip.bg_f{ width: inherit; height: inherit; } #popup2-confirm .comiis_tip.bg_f dt.f_b{ height: calc(100% - 115px); } .upload-image-water{ height: 100%; } </style><div class="upload-image-water">${renderHTML}<div>`, mask: true, only: true, callback: async () => { popup2.confirm_close(); let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传水印图片中...请稍后"); console.log(`图片数量:${needUploadImageFileArray.length}`); utils.asyncArrayForEach(needUploadImageFileArray, uploadFileAwaitFunction, completeFunction); } }, btnOkText: "继续上传", btnOther: { enable: true, text: "保存至本地", callback: () => { Array.from(needUploadImageFileArray).forEach(async (item, index) => { let base64Image = await utils.asyncFileToBase64(item); utils.downloadBase64(item.name, base64Image); }) } } }); }) } if (GM_getValue("chartBedAddWaterMark")) { tryCatch(waterMarkAwaitFunction); } else { let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传图片中...请稍后"); console.log(`图片数量:${chooseImageFiles.length}`); utils.asyncArrayForEach(chooseImageFiles, uploadFileAwaitFunction, completeFunction); } } }); $jq(document).on("click", "#imglist_kggzs .delImg", async (e) => { e.preventDefault(); e.currentTarget.parentElement.remove(); /* popup2.toast('删除中,请稍后'); let id_encoded = e.currentTarget.getAttribute("id-encode"); if(!id_encoded){ popup2.toast('获取id_encoded失败,请自行去Hello图床删除'); return; } let deleteStatus = await deleteImage(key); if(deleteStatus){ e.currentTarget.parentElement.remove(); mobile.chartBed.storage.delete("kggzs",id_encoded); } */ }) } function chartbedByHello() { /* 编辑器图片上传Hello图床 */ GM_addStyle(` #imglist_hello .delImg{ position: absolute; top: -5px; left: -5px; } `); let chartBedUrl = "https://www.helloimg.com"; let chartBedUser = GM_getValue("HelloChartBedUser"); let chartBedPwd = GM_getValue("HelloChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; /* 登录(不可用)状态 */ let clearData = () => { GM_deleteValue("HelloChartBedUser"); GM_deleteValue("HelloChartBedPwd"); loginStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } function checkLogin() { return new Promise(async (res) => { if (!chartBedUser || !chartBedPwd) { let loginCallBack = () => { let user = $jq("#chartbed_user").val().trim(); let pwd = $jq("#chartbed_pwd").val().trim(); if (user && pwd) { GM_setValue("HelloChartBedUser", user); GM_setValue("HelloChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup2.toast('设置完毕,请重新点击'); popup2.confirm_close(); res(false); } else { popup2.toast("账号或密码不能为空"); } } mobile.chartBed.popupUserPwd("Hello图床", "https://www.helloimg.com/signup", loginCallBack); } else if (chartBedAuthToken == null && !loginStatus) { popup2.mask_loading_show(); popup2.toast('正在配置auth_token'); chartBedAuthToken = await mobile.chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup2.toast('正在登录(不可用)Hello图床'); let retloginStatus = await mobile.chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); popup2.mask_close(); if (retloginStatus) { loginStatus = true; res(true); return; } else { clearData(); res(false); return; } } popup2.mask_close(); res(false); } else { res(false); } }) } $jq(document).on("click", "#imglist_hello .up_btn a", async function () { $jq("#filedata_hello").val(""); $jq("#filedata_hello").click(); }) $jq(document).on("change", "#filedata_hello", async (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; let needUploadImageArray = []; let needUploadImageFileArray = []; let uploadFileAwaitFunction = async (params) => { let imageFile = chooseImageFiles[params[0]]; let uploadImageReturn = await mobile.chartBed.uploadImage(chartBedUrl, chartBedAuthToken, imageFile); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = `<li> <span class="delImg" id-encode="${image_id_encoded}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">插入</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${image_url}][img]${image_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${image_name}" src="${image_uri}" class="vm b_ok"></a> </span> <input type="hidden" name=""> </li>`; $jq("#imglist_hello").append($jq(uploadImageHTML)); mobile.chartBed.storage.add("hello", image_id_encoded, image_url, image_thumb_url, image_name); } } let completeFunction = () => { popup2.mask_close(); $jq("#filedata_hello").val(""); } let waterMarkAwaitFunction = async () => { popup2.mask_loading_show(); Promise.all( Array.from(chooseImageFiles).map(async (item, index) => { if (item.type === "image/gif") {/* 不支持对GIF添加水印 */ let image_base64 = await utils.asyncFileToBase64(item); needUploadImageArray = needUploadImageArray.concat(image_base64); needUploadImageFileArray = needUploadImageFileArray.concat(item); } else { popup2.toast(`添加水印 ${index+1}/${chooseImageFiles.length}`); var watermark = new Watermark(); await watermark.setFile(item); watermark.addText({ "text": [GM_getValue("chartBedWaterMarkText", "MT论坛")], "fontSize": GM_getValue("chartBedWaterMarkFontSize"), "color": GM_getValue("chartBedWaterMarkFontColor"), "globalAlpha": GM_getValue("chartBedWaterGlobalAlpha"), "rotateAngle": GM_getValue("chartBedWaterMarkRotationAngle"), "xMoveDistance": GM_getValue("chartBedWaterXMoveDistance"), "yMoveDistance": GM_getValue("chartBedWaterYMoveDistance") }); needUploadImageArray = needUploadImageArray.concat(watermark.render("png")); needUploadImageFileArray = needUploadImageFileArray.concat(utils.base64ToFile(watermark.render("png"), "WaterMark_" + item.name)); } }) ).then(async () => { chooseImageFiles = needUploadImageFileArray; popup2.mask_close(); if (GM_getValue("chartBedWaterMarkAutoDefault")) { let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传水印图片中...请稍后"); console.log(`图片数量:${needUploadImageFileArray.length}`); utils.asyncArrayForEach(needUploadImageFileArray, uploadFileAwaitFunction, completeFunction); return null; } } let renderHTML = ""; Array.from(needUploadImageArray).forEach(item => { renderHTML = renderHTML + '<img src="' + item + '">'; }) popup2.confirm({ text: `<style> .dialogbox.popup2-popmenu { width: 80vw; height: 55vh; } #popup2-confirm, #popup2-confirm .comiis_tip.bg_f{ width: inherit; height: inherit; } #popup2-confirm .comiis_tip.bg_f dt.f_b{ height: calc(100% - 115px); } .upload-image-water{ height: 100%; } </style><div class="upload-image-water">${renderHTML}<div>`, mask: true, only: true, callback: async () => { popup2.confirm_close(); let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传水印图片中...请稍后"); console.log(`图片数量:${needUploadImageFileArray.length}`); utils.asyncArrayForEach(needUploadImageFileArray, uploadFileAwaitFunction, completeFunction); } }, btnOkText: "继续上传", btnOther: { enable: true, text: "保存至本地", callback: () => { Array.from(needUploadImageFileArray).forEach(async (item, index) => { let base64Image = await utils.asyncFileToBase64(item); utils.downloadBase64(item.name, base64Image); }) } } }); }) } if (GM_getValue("chartBedAddWaterMark")) { tryCatch(waterMarkAwaitFunction); } else { let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传图片中...请稍后"); console.log(`图片数量:${chooseImageFiles.length}`); utils.asyncArrayForEach(chooseImageFiles, uploadFileAwaitFunction, completeFunction); } } }) $jq(document).on("click", "#imglist_hello .delImg", async function (e) { e.preventDefault(); popup2.mask_loading_show(); popup2.toast("删除中,请稍后"); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup2.mask_close(); popup2.toast('获取id_encoded失败,请自行去Hello图床删除'); return; } let deleteStatus = await mobile.chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); popup2.mask_close(); if (deleteStatus) { $jq(this).parent().remove(); mobile.chartBed.storage.delete("hello", id_encoded); } }) } function chartbedByZ4a() { /* 编辑器图片上传z4a图床 */ GM_addStyle(` #imglist_z4a .delImg{ position: absolute; top: -5px; left: -5px; } `); let chartBedUrl = "https://www.z4a.net"; let chartBedUser = GM_getValue("Z4AChartBedUser"); let chartBedPwd = GM_getValue("Z4AChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; /* 登录(不可用)状态 */ let clearData = () => { GM_deleteValue("Z4AChartBedUser"); GM_deleteValue("Z4AChartBedPwd"); loginStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } function checkLogin() { return new Promise(async (res) => { if (!chartBedUser || !chartBedPwd) { let loginCallBack = () => { let user = $jq("#chartbed_user").val().trim(); let pwd = $jq("#chartbed_pwd").val().trim(); if (user && pwd) { GM_setValue("Z4AChartBedUser", user); GM_setValue("Z4AChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup2.toast('设置完毕,请重新点击'); popup2.confirm_close(); res(false); } else { popup2.toast("账号或密码不能为空"); } } mobile.chartBed.popupUserPwd("Z4A图床", "https://www.z4a.net/signup", loginCallBack); } else if (chartBedAuthToken == null && !loginStatus) { popup2.mask_loading_show(); popup2.toast('正在配置auth_token'); chartBedAuthToken = await mobile.chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup2.toast('正在登录(不可用)Z4A图床'); let retloginStatus = await mobile.chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); popup2.mask_close(); if (retloginStatus) { console.log("登录(不可用)成功"); loginStatus = true; res(true); return; } else { clearData(); res(false); return; } } popup2.mask_close(); res(false); } else { res(false); } }) } $jq(document).on("click", "#imglist_z4a .up_btn a", async function (e) { $jq("#filedata_z4a").val(""); $jq("#filedata_z4a").click(); }) $jq(document).on("change", "#filedata_z4a", async (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; let needUploadImageArray = []; let needUploadImageFileArray = []; let uploadFileAwaitFunction = async (params) => { let imageFile = chooseImageFiles[params[0]]; let uploadImageReturn = await mobile.chartBed.uploadImage(chartBedUrl, chartBedAuthToken, imageFile); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = `<li> <span class="delImg" id-encode="${image_id_encoded}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">插入</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${image_url}][img]${image_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${image_name}" src="${image_uri}" class="vm b_ok"></a> </span> <input type="hidden" name=""> </li>`; $jq("#imglist_z4a").append($jq(uploadImageHTML)); mobile.chartBed.storage.add("z4a", image_id_encoded, image_url, image_thumb_url, image_name); } } let completeFunction = () => { popup2.mask_close(); $jq("#filedata_z4a").val(""); } let waterMarkAwaitFunction = async () => { popup2.mask_loading_show(); Promise.all( Array.from(chooseImageFiles).map(async (item, index) => { if (item.type === "image/gif") {/* 不支持对GIF添加水印 */ let image_base64 = await utils.asyncFileToBase64(item); needUploadImageArray = needUploadImageArray.concat(image_base64); needUploadImageFileArray = needUploadImageFileArray.concat(item); } else { popup2.toast(`添加水印 ${index+1}/${chooseImageFiles.length}`); var watermark = new Watermark(); await watermark.setFile(item); watermark.addText({ "text": [GM_getValue("chartBedWaterMarkText", "MT论坛")], "fontSize": GM_getValue("chartBedWaterMarkFontSize"), "color": GM_getValue("chartBedWaterMarkFontColor"), "globalAlpha": GM_getValue("chartBedWaterGlobalAlpha"), "rotateAngle": GM_getValue("chartBedWaterMarkRotationAngle"), "xMoveDistance": GM_getValue("chartBedWaterXMoveDistance"), "yMoveDistance": GM_getValue("chartBedWaterYMoveDistance") }); needUploadImageArray = needUploadImageArray.concat(watermark.render("png")); needUploadImageFileArray = needUploadImageFileArray.concat(utils.base64ToFile(watermark.render("png"), "WaterMark_" + item.name)); } }) ).then(async () => { chooseImageFiles = needUploadImageFileArray; popup2.mask_close(); if (GM_getValue("chartBedWaterMarkAutoDefault")) { let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传水印图片中...请稍后"); console.log(`图片数量:${needUploadImageFileArray.length}`); utils.asyncArrayForEach(needUploadImageFileArray, uploadFileAwaitFunction, completeFunction); return null; } } let renderHTML = ""; Array.from(needUploadImageArray).forEach(item => { renderHTML = renderHTML + '<img src="' + item + '">'; }) popup2.confirm({ text: `<style> .dialogbox.popup2-popmenu { width: 80vw; height: 55vh; } #popup2-confirm, #popup2-confirm .comiis_tip.bg_f{ width: inherit; height: inherit; } #popup2-confirm .comiis_tip.bg_f dt.f_b{ height: calc(100% - 115px); } .upload-image-water{ height: 100%; } </style><div class="upload-image-water">${renderHTML}<div>`, mask: true, only: true, callback: async () => { popup2.confirm_close(); let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传水印图片中...请稍后"); console.log(`图片数量:${needUploadImageFileArray.length}`); utils.asyncArrayForEach(needUploadImageFileArray, uploadFileAwaitFunction, completeFunction); } }, btnOkText: "继续上传", btnOther: { enable: true, text: "保存至本地", callback: () => { Array.from(needUploadImageFileArray).forEach(async (item, index) => { let base64Image = await utils.asyncFileToBase64(item); utils.downloadBase64(item.name, base64Image); }) } } }); }) } if (GM_getValue("chartBedAddWaterMark")) { tryCatch(waterMarkAwaitFunction); } else { let login_status = await checkLogin(); if (login_status) { popup2.mask_loading_show(); popup2.toast("上传图片中...请稍后"); console.log(`图片数量:${chooseImageFiles.length}`); utils.asyncArrayForEach(chooseImageFiles, uploadFileAwaitFunction, completeFunction); } } }) $jq(document).on("click", "#imglist_z4a .delImg", async function (e) { e.preventDefault(); popup2.mask_loading_show(); popup2.toast("删除中,请稍后"); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup2.toast('获取id_encoded失败,请自行去Z4A图床删除'); return; } let deleteStatus = await mobile.chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); popup2.mask_close(); if (deleteStatus) { $jq(this).parent().remove(); mobile.chartBed.storage.delete("z4a", id_encoded); } }) } function chartbedByHistory() { /* 所有图床历史上传过的图片 */ GM_addStyle(` .comiis_post_imglist li .delImg { position: absolute; top: -5px; left: -5px; } `); if (GM_getValue("chartBedsImagesHistory") == undefined) { GM_setValue("chartBedsImagesHistory", []); } let historyImages = mobile.chartBed.storage.get(); let isAdd = false; if (historyImages == []) { return; } $jq(document).on("click", "#comiis_pictitle_tab_n_5", function (e) { if (isAdd) { $jq(document).off("click", "#comiis_pictitle_tab_n_5"); return; } isAdd = true; $jq.each(historyImages, (i) => { let _web = historyImages[i]["web"]; let _url = historyImages[i]["url"]; let _thumb_url = historyImages[i]["thumb_url"]; let _name = historyImages[i]["name"]; let _imageHTML = ` <li> <span class="delImg" t-index="${i}"> <a href="javascript:;"> <i class="comiis_font f_g"></i> </a> </span> <span class="charu f_f">${_web}</span> <span class="p_img"> <a href="javascript:;" onclick="comiis_addsmilies('[url=${_url}][img]${_url}[/img][/url]')"> <img style="height:54px;width:54px;" title="${_name}" src="${_thumb_url}" class="vm b_ok"></a> </span> <input type="hidden" name="${_name}"> </li> `; $jq("#imglist_history").append($jq(_imageHTML)); }) }); $jq(document).on("click", "#imglist_history .delImg", (e) => { e.preventDefault(); let _t_index = e.currentTarget.getAttribute("t-index"); let imageItem = historyImages[_t_index]; let web = imageItem["web"]; let id_encoded = imageItem["id_encoded"]; e.currentTarget.parentElement.remove(); mobile.chartBed.storage.delete(web, id_encoded); }) } let imgBtn = `<a href="javascript:;" class="comiis_pictitle"><i class="comiis_font"><em>图片</em></i></a>`; let menu = ` <div class="bg_f b_b cl gm_plugin_chartbed" style="display: none;"> <div class="comiis_over_box comiis_input_style"> <div class="comiis_upbox comiis_allowpostimg bg_f cl"> </div> </div> </div> `; GM_addStyle(` #filedata, #filedata_kggzs, #filedata_hello, #filedata_z4a{ display: none; } .comiis_tip dt p{ padding: 10px 0px; } .upload-image-water{ overflow-y: auto; } .upload-image-water img{ width: 100%; margin: 10px 0px; } `); let jqMenu = $jq(menu); jqMenu.find(".comiis_upbox.comiis_allowpostimg").append($jq(".comiis_wzpost.comiis_input_style .comiis_upbox.comiis_allowpostimg").children()); $jq(".swiper-wrapper.comiis_post_ico").append(imgBtn); $jq("#comiis_post_tab").append(jqMenu); tryCatch(chartbedByMT); tryCatch(chartbedByKggzs); tryCatch(chartbedByHello); tryCatch(chartbedByZ4a); tryCatch(chartbedByHistory); }, editorOptimization() { /* 编辑器优化-简略 */ if (!GM_getValue("v49") || !window.location.href.match(mt_config.rexp.forum_post) ) { return }; GM_addStyle(` #comiis_foot_menu_beautify{ position: fixed; display: inline-flex; z-index: 90; left: 0; right: 0; bottom: 0; width: 100%; height: 48px; overflow: hidden; align-content: center; justify-content: center; align-items: center; } #comiis_foot_menu_beautify_big{ position: fixed; display: inline-flex; flex-direction: column; z-index: 90; left: 0; right: 0; bottom: 0; width: 100%; min-height: 120px; overflow: hidden; align-content: center; justify-content: center; align-items: center; } #comiis_foot_menu_beautify input.bg_e.f_c::-webkit-input-placeholder { padding-left:10px; color:#999999; } #comiis_foot_menu_beautify .reply_area ul li a{ display: block; width: 22px; height: 22px; padding: 4px 8px; margin: 8px 0; position: relative; } #comiis_foot_menu_beautify .reply_area ul{ display: inline-flex; align-content: center; align-items: center; justify-content: center; } #comiis_foot_menu_beautify .reply_area, #comiis_foot_menu_beautify .reply_area ul{ width: 100%; } #comiis_foot_menu_beautify .reply_area li a i { width: 22px; height: 22px; line-height: 22px; font-size: 22px; } #comiis_foot_menu_beautify .reply_area li a span { position: absolute; display: block; font-size: 10px; height: 14px; line-height: 14px; padding: 0 6px; right: -8px; top: 4px; overflow: hidden; border-radius: 20px; } #comiis_foot_menu_beautify li[data-attr="回帖"] input{ border: transparent; border-radius: 15px; height: 30px; width: 100%; } #comiis_foot_menu_beautify_big .reply_area{ margin: 10px 0px 5px 0px; } #comiis_foot_menu_beautify_big .reply_area ul{ display: inline-flex; align-content: center; justify-content: center; align-items: flex-end; } #comiis_foot_menu_beautify_big li[data-attr="回帖"]{ width: 75vw; margin-right: 15px; } #comiis_foot_menu_beautify_big .reply_user_content{ width: 75vw; word-wrap: break-word; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 8px 10px; } #comiis_foot_menu_beautify_big li[data-attr="发表"]{ } #comiis_foot_menu_beautify_big li[data-attr="发表"] .fastpostform_new{ text-align: center; margin-bottom: 28px; } #comiis_foot_menu_beautify_big li[data-attr="发表"] .fastpostform_new i{ font-size: 22px; } #comiis_foot_menu_beautify_big li[data-attr="发表"] input{ width: 60px; height: 30px; border: transparent; color: #ffffff; background: #d1c9fc; border-radius: 30px; margin-bottom: 6px; } #comiis_foot_menu_beautify_big li[data-attr="发表"] input[data-text='true']{ background: #7a61fb; } #comiis_foot_menu_beautify_big li[data-attr="回帖"] textarea{ padding: 10px 10px 10px 10px; border: transparent; border-radius: 6px; min-height: 70px; max-height: 180px; background: #e9e8ec; overflow-y: auto; width: -webkit-fill-available; } #comiis_foot_menu_beautify .reply_area li[data-attr="回帖"]{ width: 65%; margin: 0px 3%; text-align: center; } #comiis_foot_menu_beautify .reply_area li:not(first-child){ width: 7%; text-align: -webkit-center; text-align: center; } #comiis_foot_menu_beautify_big .other_area{ width: 100%; text-align: center; } #comiis_foot_menu_beautify_big .other_area .menu_icon a{ margin: 0px 20px; } #comiis_foot_menu_beautify_big .other_area i{ font-size: 24px; } #comiis_foot_menu_beautify_big .other_area #comiis_insert_ubb_tab i{ font-size: 16px; } #comiis_foot_menu_beautify_big .other_area .menu_body{ background: #f4f4f4; } #comiis_foot_menu_beautify_big .other_area .menu_body .comiis_smiley_box .comiis_optimization{ max-height: 140px; overflow-y: auto; flex-direction: column; } #comiis_foot_menu_beautify_big .other_area .menu_body .comiis_smiley_box .bqbox_t{ background: #fff; } #comiis_foot_menu_beautify_big .other_area .menu_body .comiis_smiley_box .bqbox_t ul#comiis_smilies_key li a.bg_f.b_l.b_r{ background: #f4f4f4 !important; } #comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab #comiis_pictitle_key{ display: flex; top: 0px; left: 0px; height: 42px; line-height: 42px; overflow: hidden; } #comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab #comiis_pictitle_key li{ padding: 0px 10px; } #comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab .comiis_upbox, #comiis_foot_menu_beautify_big .menu_body #comiis_insert_ubb_tab .comiis_input_style{ height: 140px; overflow-y: auto; flex-direction: column; } #comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab #filedata_kggzs, #comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab #filedata_hello, #comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab #filedata_z4a{ display:none; } `); let pl = $jq("#comiis_foot_memu .comiis_flex li")[1]; let dz = $jq("#comiis_foot_memu .comiis_flex li")[2]; let sc = $jq("#comiis_foot_memu .comiis_flex li")[3]; let form_action = $jq('#fastpostform').attr('action'); let form_serialize = $jq('#fastpostform').serialize(); let form_url = $jq("#fastpostform .header_y a").attr("href"); $jq("#needmessage[name='message']").remove(); $jq("#imglist").remove(); $jq("#fastpostsubmitline").remove(); $jq("#fastpostsubmit").remove(); $jq("#comiis_foot_memu").hide(); $jq("#comiis_foot_memu").after($jq(` <div id="comiis_foot_menu_beautify" class="bg_f b_t"> <div class="reply_area"> <ul> <li data-attr="回帖"><input type="text" class="bg_e f_c" placeholder="发帖千百度,文明第一步" readonly="readonly"></li> <li data-attr="评论数量">${pl.innerHTML}</li> <li data-attr="点赞">${dz.innerHTML}</li> <li data-attr="收藏">${sc.innerHTML}</li> </ul> </div> </div> <div id="comiis_foot_menu_beautify_big" data-model="comment" class="bg_f b_t" style="display:none;"> <div class="reply_area"> <div class="reply_user_content" style="display:none;"></div> <ul> <li data-attr="回帖"><textarea id="needmessage" placeholder="发帖千百度,文明第一步"></textarea></li> <li data-attr="发表"> <div class="fastpostform_new"><a href="${form_url}" data-comment-url="${form_url}" target="_blank"><i class="comiis_font f_d"></i></a></div> <div id="fastpostsubmitline"><input data-comment-url="${form_url}" data-comment-action="${form_action}" data-comment-serialize="${form_serialize}" data-text="false" type="button" value="发表" name="replysubmit" id="fastpostsubmit" comiis="handle"></div> </li> </ul> </div> <div class="other_area"> <div class="menu_icon"> <a href="javascript:;" class="comiis_pictitle"><i class="comiis_font"></i></a> <a href="javascript:;" class="comiis_smile"><i class="comiis_font"></i></a> <a href="javascript:;" class="commis_insert_bbs"><i class="comiis_font"></i></a> </div> <div class="menu_body"> <div id="comiis_pictitle_tab"> <div class="comiis_upbox bg_f cl"> <ul id="imglist" class="comiis_post_imglist cl"> <li class="up_btn"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata" accept="image/*" multiple> </li> </ul> </div> <div class="comiis_upbox bg_f cl" style="display: none;"> <ul id="imglist_kggzs" class="comiis_post_imglist cl"> <li class="up_btn"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_kggzs" accept="image/*" multiple> </li> </ul> </div> <div class="comiis_upbox bg_f cl" style="display: none;"> <ul id="imglist_hello" class="comiis_post_imglist cl"> <li class="up_btn"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_hello" accept="image/*" multiple> </li> </ul> </div> <div class="comiis_upbox bg_f cl" style="display: none;"> <ul id="imglist_z4a" class="comiis_post_imglist cl"> <li class="up_btn"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_z4a" accept="image/*" multiple> </li> </ul> </div> <div class='comiis_upbox bg_f cl' style='display: none;'> <ul id="imglist_history" class="comiis_post_imglist cl"> </ul> </div> <div class='comiis_upbox comiis_chartbed_settings' style='display: none;height: 170px;overflow-y: auto;background: #fff;'> <ul id="imglist_settings" class="cl"> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">水印</div> <div class="styli_r"> <input type="checkbox" name="addwatermark" id="addwatermark" value="1" class="comiis_checkbox_key" checked="checked" style="display: none;"> <label for="addwatermark" class="wauto"><code class="bg_f b_ok comiis_checkbox comiis_checkbox_close"></code></label> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">自动添加水印并上传</div> <div class="styli_r"> <input type="checkbox" name="autowatermarkdefault" id="autowatermarkdefault" value="1" class="comiis_checkbox_key" checked="checked" style="display: none;"> <label for="autowatermarkdefault" class="wauto"><code class="bg_f b_ok comiis_checkbox comiis_checkbox_close"></code></label> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">文字</div> <div class="styli_r"> <input type="text" style=" height: 32px; line-height: 32px; padding: 0 20px; margin-top: 1px; margin-right: 12px; border: none !important; font-size: 15px; border-radius: 20px; " name="watermarktext" id="watermarktext" placeholder="请输入需要添加水印的文字"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">颜色</div> <div class="styli_r"> <input type="color" style="width: 60px; border-radius: unset; padding: unset; margin-right: 32px; height: 32px; line-height: 32px; margin-top: 1px; font-size: 15px; border: none;" name="watermarkfontcolor" id="watermarkfontcolor"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">大小</div> <div class="styli_r"> <input type="number" style=" height: 32px; line-height: 32px; padding: 0 20px; margin-top: 1px; margin-right: 12px; border: none !important; font-size: 15px; border-radius: 20px; width:60px; " name="watermarkfontsize" id="watermarkfontsize" placeholder="单位px" value="" min="0" max="300" step="1"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">透明度</div> <div class="styli_r"> <input type="number" style=" height: 32px; line-height: 32px; padding: 0 20px; margin-top: 1px; margin-right: 12px; border: none !important; font-size: 15px; border-radius: 20px; width:60px; " name="watermarkglobalalpha" id="watermarkglobalalpha" placeholder="0~1" value="" min="0" max="1" step="0.01"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">左右间距</div> <div class="styli_r"> <input type="number" style=" height: 32px; line-height: 32px; padding: 0 20px; margin-top: 1px; margin-right: 12px; border: none !important; font-size: 15px; border-radius: 20px; width:60px; " name="watermarkxmovedistance" id="watermarkxmovedistance" placeholder="1~200" value="" min="1" max="200" step="1"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">上下间距</div> <div class="styli_r"> <input type="number" style=" height: 32px; line-height: 32px; padding: 0 20px; margin-top: 1px; margin-right: 12px; border: none !important; font-size: 15px; border-radius: 20px; width:60px; " name="watermarkymovedistance" id="watermarkymovedistance" placeholder="1~200" value="" min="1" max="200" step="1"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex" style="text-align: left;">旋转角度</div> <div class="styli_r"> <input type="number" style=" height: 32px; line-height: 32px; padding: 0 20px; margin-top: 1px; margin-right: 12px; border: none !important; font-size: 15px; border-radius: 20px; width:60px; " name="watermarkrotationangle" id="watermarkrotationangle" placeholder="-360~360" value="" min="-360" max="360" step="1"> </div> </li> </ul> </div> <div class="bqbox_t"> <ul id="comiis_pictitle_key"> <li class="bg_f" id="comiis_pictitle_tab_n_1"><a href="javascript:;" class="">论坛</a></li> <li class="" id="comiis_pictitle_tab_n_2"><a href="javascript:;" class="">康哥图床</a></li> <li class="" id="comiis_pictitle_tab_n_3"><a href="javascript:;" class="">Hello图床</a></li> <li class="" id="comiis_pictitle_tab_n_4"><a href="javascript:;" class="">Z4A图床</a></li> <li class="" id="comiis_pictitle_tab_n_5"><a href="javascript:;" class="">历史图片</a></li> <li class="" id="comiis_pictitle_tab_n_6"><a href="javascript:;" class="">设置</a></li> </ul> </div> </div> <div id="comiis_post_tab" class="comiis_bqbox"> <div class="comiis_smiley_box swiper-container-horizontal swiper-container-android"> <div class="swiper-wrapper bqbox_c comiis_optimization"> <div class="swiper-slide"> <li><a href="javascript:;" onclick="comiis_addsmilies('[呵呵]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq001.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[撇嘴]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq002.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[色]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq003.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[发呆]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq004.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[得意]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq005.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[流泪]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq006.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[害羞]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq007.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[闭嘴]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq008.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[睡]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq009.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[大哭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq010.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[尴尬]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq011.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[发怒]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq012.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[调皮]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq013.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[呲牙]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq014.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[惊讶]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq015.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[难过]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq016.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[酷]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq017.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[冷汗]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq018.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[抓狂]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq019.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[吐]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq020.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[偷笑]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq021.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[可爱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq022.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[白眼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq023.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[傲慢]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq024.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[饥饿]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq025.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[困]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq026.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[惊恐]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq027.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[流汗]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq028.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[憨笑]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq029.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[装逼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq030.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[奋斗]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq031.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[咒骂]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq032.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[疑问]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq033.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[嘘]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq034.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[晕]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq035.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[折磨]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq036.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[衰]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq037.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[骷髅]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq038.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[敲打]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq039.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[再见]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq040.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[擦汗]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq041.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[抠鼻]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq042.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[鼓掌]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq043.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[糗大了]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq044.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[坏笑]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq045.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[左哼哼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq046.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[右哼哼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq047.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[哈欠]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq048.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[鄙视]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq049.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[委屈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq050.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[快哭了]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq051.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[阴脸]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq052.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[亲亲]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq053.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[吓]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq054.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[可怜]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq055.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[眨眼睛]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq056.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[笑哭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq057.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[dogeQQ]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq058.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[泪奔]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq059.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[无奈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq060.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[托腮]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq061.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[卖萌]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq062.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[斜眼笑]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq063.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[喷血]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq064.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[惊喜]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq065.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[骚扰]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq066.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[小纠结]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq067.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[我最美]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq068.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[菜刀]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq069.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[西瓜]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq070.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[啤酒]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq071.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[篮球]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq072.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[乒乓]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq073.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[咖啡]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq074.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[饭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq075.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[猪]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq076.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[玫瑰]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq077.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[凋谢]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq078.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[示爱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq079.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[爱心]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq080.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[心碎]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq081.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[蛋糕]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq082.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[闪电]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq083.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[炸弹]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq084.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[刀]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq085.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[足球]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq086.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[瓢虫]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq087.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[便便]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq088.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[月亮]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq089.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[太阳]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq090.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[礼物]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq091.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[抱抱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq092.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[喝彩]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq93.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[祈祷]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq94.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[棒棒糖]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq95.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[药]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq96.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[赞]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq097.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[差劲]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq098.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[握手]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq099.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[胜利]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq100.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[抱拳]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq101.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[勾引]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq102.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[拳头]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq103.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[差劲]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq104.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[爱你]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq105.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[NO]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq106.gif" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[OK]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq107.gif" class="vm"></a></li> </div> <div class="swiper-slide" style="display: none;"> <li><a href="javascript:;" onclick="comiis_addsmilies('[#呵呵]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_1.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#滑稽]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_10.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#吐舌]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_3.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#哈哈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_2.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#啊]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_23.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#酷]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_22.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#怒]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_13.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#开心]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_39.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#汗]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_14.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#泪]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_16.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#黑线]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_15.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#鄙视]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_21.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#不高兴]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_12.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#真棒]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_17.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#钱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_40.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#疑问]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_26.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#阴险]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_20.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#吐]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_34.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#咦]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_41.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#委屈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_29.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#花心]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_6.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#呼~]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_42.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#激动]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_5.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#冷]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_43.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#可爱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_4.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#What?]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_25.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#勉强]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_38.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#狂汗]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_24.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#酸爽]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_27.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#乖]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_8.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#雅美蝶]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_28.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#睡觉]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_31.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#惊哭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_19.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#哼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_44.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#笑尿]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_32.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#惊讶]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_30.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#小乖]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_7.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#喷]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_18.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#抠鼻]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_33.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#捂嘴笑]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_9.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#你懂的]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_11.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#犀利]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_35.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#小红脸]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_36.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#懒得理]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_37.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#爱心]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_45.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#心碎]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_46.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#玫瑰]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_47.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#礼物]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_48.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#彩虹]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_49.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#太阳]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_50.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#月亮]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_51.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#钱币]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_52.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#咖啡]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_53.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#蛋糕]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_54.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#大拇指]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_55.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#胜利]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_56.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#爱你]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_57.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#OK]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_58.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#弱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_59.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#沙发]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_60.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#纸巾]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_61.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#香蕉]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_62.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#便便]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_63.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#药丸]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_64.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#红领巾]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_65.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#蜡烛]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_66.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#三道杠]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_67.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#音乐]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_68.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[#灯泡]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_69.png" class="vm"></a></li> </div> <div class="swiper-slide" style="display: none;"> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/1.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge思考]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/2.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge再见]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/3.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge生气]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/4.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge气哭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/5.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge笑哭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/7.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge调皮]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/6.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge啊哈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/8.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[doge原谅TA]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/9.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[miao]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/10.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[miao思考]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/11.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[miao拜拜]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/12.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[miao生气]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/13.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[miao气哭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/14.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[二哈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/15.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[摊手]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/19.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w并不简单]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/20.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w滑稽]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/21.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w色]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/22.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w爱你]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/23.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w拜拜]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/24.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w悲伤]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/25.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w鄙视]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/26.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w馋嘴]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/27.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w冷汗]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/28.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w打哈欠]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/29.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w打脸]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/30.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w敲打]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/31.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w生病]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/32.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w闭嘴]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/33.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w鼓掌]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/34.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w哈哈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/35.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w害羞]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/36.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w呵呵]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/37.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w黑线]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/38.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w哼哼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/39.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w调皮]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/40.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w可爱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/41.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w可怜]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/42.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w酷]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/43.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w困]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/44.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w懒得理你]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/45.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w流泪]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/46.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w怒]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/47.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w怒骂]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/48.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w钱]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/49.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w亲亲]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/50.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w傻眼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/51.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w便秘]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/52.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w失望]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/53.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w衰]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/54.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w睡觉]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/55.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w思考]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/56.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w开心]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/57.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w色舔]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/58.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w偷笑]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/59.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w吐]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/60.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w抠鼻]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/61.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w委屈]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/62.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w笑哭]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/63.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w嘻嘻]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/64.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w嘘]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/65.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w阴险]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/66.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w疑问]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/67.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w抓狂]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/70.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w晕]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/69.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w右哼哼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/68.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w左哼哼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/71.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w肥皂]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/77.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w奥特曼]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/78.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w草泥马]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/79.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w兔子]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/80.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w熊猫]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/81.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w猪头]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/82.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w→_→]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/83.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w给力]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/84.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w囧]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/85.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w萌]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/86.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w神马]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/87.png" class="vm"></a></li> <li><a href="javascript:;" onclick="comiis_addsmilies('[w威武]');"><img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/88.png" class="vm"></a></li> </div> </div> <div class="bqbox_t"> <ul id="comiis_smilies_key"> <li> <a href="javascript:;" id="comiis_smilies_tab_n_1" class="bg_f b_l b_r"> <img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq063.gif" class="vm"> </a> </li> <li> <a href="javascript:;" id="comiis_smilies_tab_n_2" class=""> <img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_10.png" class="vm"> </a> </li> <li> <a href="javascript:;" id="comiis_smilies_tab_n_3" class=""> <img data-src="https://cdn-bbs.mt2.cn/static/image/smiley/doge/21.png" class="vm"> </a> </li> </ul> </div> </div> </div> <div id="comiis_insert_ubb_tab" style="display: none;"> <div class="bg_f comiis_input_style"> <div class="comiis_post_urlico b_b"> <ul> </ul> </div> </div> </div> </div> </div> `)); $jq("#comiis_foot_menu_beautify .comiis_recommend_addkey").on("click", function (e) { /* 点赞按钮事件 */ if (comiis_recommend_key == 0) { comiis_recommend_key = 1; $jq.ajax({ type: 'GET', url: $jq(this).attr('href') + '&inajax=1', dataType: 'xml', success: (s) => { var s = s.lastChild.firstChild.nodeValue; if (s.indexOf("您已评价过本主题") >= 0) { $jq.ajax({ type: 'GET', url: 'plugin.php?id=comiis_app&comiis=re_recommend&tid=' + tid + '&inajax=1', dataType: 'xml', success: (v) => { var recommend_num = Number($jq('#comiis_recommend_num').text()); if ($jq(".comiis_recommend_list_a").length > 0) { $jq('#comiis_recommend_list_a' + uid).remove(); } if ($jq(".comiis_recommend_list_s").length > 0) { $jq('#comiis_recommend_list_s' + uid).remove(); } if ($jq(".comiis_recommend_list_t").length > 0) { $jq('#comiis_recommend_list_t' + uid).remove(); } if (recommend_num > 1) { $jq('.comiis_recommend_num').text((recommend_num - Number(allowrecommend))); $jq('.comiis_recommend_nums').text('+' + (recommend_num - Number(allowrecommend))); } else { $jq('#comiis_recommend_num').remove(); $jq('.comiis_recommend_nums').text(''); if ($jq(".comiis_recommend_list_a").length > 0) { $jq('.comiis_recommend_list_a').empty().removeClass('comiis_recommend_list_on'); } if ($jq(".comiis_recommend_list_t").length > 0) { $jq('.comiis_recommend_list_t').removeClass('comiis_recommend_list_on'); } } $jq('.comiis_recommend_addkey i').html(''); $jq('.comiis_recommend_color').removeClass('f_a').addClass("f_b"); if ($jq(".comiis_recommend_list_s").length > 0) { if ($jq(".comiis_recommend_list_s li").length < 7) { $jq('.txshow_more').hide(); } else { $jq('.txshow_more').show(); } } popup2.toast('已取消点赞'); } }) } else if (s.indexOf("您不能评价自己的帖子") >= 0) { popup2.toast('不能点赞自己的帖子'); } else if (s.indexOf("今日评价机会已用完") >= 0) { popup2.toast('您今日的点赞机会已用完'); } else if (s.indexOf("'recommendv':'+" + allowrecommend + "'") >= 0) { var b = [], r; r = s.match(/\'recommendc\':\'(.*?)\'/); if (r != null) { b['recommendc'] = r[1]; } else { b['recommendc'] = 0; } r = s.match(/\'daycount\':\'(.*?)\'/); if (r != null) { b['daycount'] = r[1]; } else { b['daycount'] = 0; } if ($jq('.comiis_recommend_new span').length < 1) { $jq('.comiis_recommend_new').append('<span class="bg_del f_f comiis_kmvnum comiis_recommend_num" id="comiis_recommend_num">0</span>'); } var comiis_recommend_num = Number($jq('#comiis_recommend_num').text()); if ($jq(".comiis_recommend_list_a").length > 0) { $jq('.comiis_recommend_list_a').removeClass('comiis_recommend_list_on').addClass("comiis_recommend_list_on").prepend(($jq(".comiis_recommend_list_a li").length > 0 ? '' : '<li style="float:right;margin-right:0;"><a href="misc.php?op=recommend&tid= ' + tid + '&mod=faq&mobile=2"><span class="bg_b f_c"><em class="comiis_recommend_num">' + comiis_recommend_num + '</em>赞</span></a></li>') + '<li id="comiis_recommend_list_a' + uid + '"><a href="home.php?mod=space&uid=' + uid + '"><img src="uc_server/avatar.php?uid=' + uid + '&size=small"></a></li>'); } if ($jq('.comiis_recommend_list_t').length > 0) { $jq('.comiis_recommend_list_t').removeClass('comiis_recommend_list_on').addClass("comiis_recommend_list_on").prepend('<span id="comiis_recommend_list_t' + uid + '"><a href="home.php?mod=space&uid=' + uid + '" class="f_c">' + username + '</a>' + ($jq(".comiis_recommend_list_t a").length > 0 ? '<span class="f_d"> , </span>' : '') + '</span>'); } if ($jq(".comiis_recommend_list_s").length > 0) { $jq('.comiis_recommend_list_s').removeClass('comiis_recommend_list_on').addClass("comiis_recommend_list_on").prepend(($jq(".comiis_recommend_list_s li").length > 0 ? '' : '') + '<li id="comiis_recommend_list_s' + uid + '"><a href="home.php?mod=space&uid=' + uid + '"><img src="uc_server/avatar.php?uid=' + uid + '&size=small"></a></li>'); } $jq('.comiis_recommend_num').text(comiis_recommend_num + Number(allowrecommend)); $jq('.comiis_recommend_nums').text('+' + (comiis_recommend_num + Number(allowrecommend))); $jq('.comiis_recommend_addkey i').html(''); $jq('.comiis_recommend_color').removeClass('f_b').addClass("f_a"); if ($jq(".comiis_recommend_list_s").length > 0) { if ($jq(".comiis_recommend_list_s li").length < 7) { $jq('.txshow_more').hide(); } else { $jq('.txshow_more').show(); } } popup2.toast('点赞成功' + (b['daycount'] ? ', 您今天还能点赞 ' + (b['daycount'] - 1) + ' 次' : '')); } else if (s.indexOf("window.location.href = 'member.php?mod=logging&action=login&mobile=2'") >= 0) { window.location.href = 'member.php?mod=logging&action=login&mobile=2'; } else { popup2.toast('没有点赞权限或帖子不存在'); } setTimeout(function () { comiis_recommend_key = 0; }, 500); }, error: () => { window.location.href = obj.attr('href'); setTimeout(function () { comiis_recommend_key = 0; }, 500); } }) } return false; }) textarea_scrollHeight = () => {}; let btn_fabiao = $jq('#comiis_foot_menu_beautify_big li[data-attr="发表"] input'); if (typeof unsafeWindow.comiis_addsmilies == "function") { /* 替换全局函数添加图片到里面触发input */ unsafeWindow.comiis_addsmilies = (a) => { unsafeWindow.$('#needmessage').comiis_insert(a); unsafeWindow.$("#needmessage")[0].dispatchEvent(new Event('propertychange')); } } $jq("#comiis_foot_menu_beautify_big textarea").on("input propertychange", function (e) { /* 输入框内容改变,高度也改变事件 */ e.preventDefault(); let inputValue = e.target.value; if (inputValue != "") { btn_fabiao.attr("data-text", "true"); $jq("#comiis_foot_menu_beautify li[data-attr='回帖'] input").attr("placeholder", "[草稿待发送]"); } else { btn_fabiao.attr("data-text", "false"); $jq("#comiis_foot_menu_beautify li[data-attr='回帖'] input").attr("placeholder", "发帖千百度,文明第一步"); } $jq(this).css("height", "70px"); $jq(this).css("height", e.target.scrollHeight - 20 + "px"); }) let error_code = { 1: { "error_match": "抱歉,您填写的内容包含敏感词而无法提交", "popup_text": "抱歉,您填写的内容包含敏感词而无法提交" }, 2: { "error_match": "抱歉,管理员设置了本版块发表于 30 天以前的主题自动关闭,不再接受新回复", "popup_text": "抱歉,管理员设置了本版块发表于 30 天以前的主题自动关闭,不再接受新回复" }, 3: { "error_match": "抱歉,本主题已关闭,不再接受新内容", "popup_text": "抱歉,本主题已关闭,不再接受新内容" }, 4: { "error_match": "抱歉,管理员设置了本版块发表于 30 天以前的主题自动关闭,不再接受新回复", "popup_text": "抱歉,管理员设置了本版块发表于 30 天以前的主题自动关闭,不再接受新回复" }, 5: { "error_match": "抱歉,您的帖子小于 10 个字符的限制", "popup_text": "抱歉,您的帖子小于 10 个字符的限制" } } function handle_error(s) { let return_status = false; let messagetext = $jq(s.lastChild.firstChild.nodeValue).find("#messagetext").text(); if (messagetext.trim() == "") { return return_status; } console.log(messagetext); $jq.each(error_code, (i, v) => { if (messagetext.indexOf(v["error_match"]) != -1) { if (messagetext.indexOf(`typeof errorhandle_=='function'`) != -1) { /* 奇怪的返回值,在该帖子是关闭状态,点击回复会出现抱歉,本主题已关闭,不再接受新内容,正常是errorhandle_fastpost */ popup2.toast(v["popup_text"]); } return_status = true; return; } }) return return_status; } $jq('#fastpostsubmit').on('click', function () { /* 发表按钮|回复按钮点击事件 */ if ($jq("#needmessage").val() == null || $jq("#needmessage").val() == '') { return; } popup2.mask_loading_show(); if ($jq("#fastpostsubmit").val() == "发表") { var msgobj = $jq('#needmessage'); let url = form_action + 'reply&handlekey=fastpost&loc=1&inajax=1'; let data = form_serialize + msgobj.val(); $jq.each($jq("#imglist input[type='hidden']"), (i, v) => { data = data + "&" + v.getAttribute("name") + "="; }) $jq.ajax({ type: 'POST', url: url, data: data, timeout: 5000, dataType: 'xml', success: function (s) { popup2.mask_close(); console.log(s.lastChild.firstChild.nodeValue); evalscript(s.lastChild.firstChild.nodeValue); if (handle_error(s)) { return; } $jq(document).scrollTop($jq(document).height()); $jq("#needmessage").val(""); $jq("#comiis_head").click(); $jq("#comiis_foot_menu_beautify_big .reply_user_content").hide(); $jq('#comiis_foot_menu_beautify_big li[data-attr="发表"] input').attr("data-text", "false"); $jq("#comiis_foot_menu_beautify li[data-attr='回帖'] input").attr("placeholder", "发帖千百度,文明第一步"); }, error: function (e) { popup2.mask_close(); console.log(e); /* window.location.href = form_action; */ popup2.toast("连接超时,网络异常"); } }); } else { /* 回复 */ var msgobj = $jq('#needmessage'); let data = $jq('#comiis_foot_menu_beautify_big .reply_user_content').attr('data-reply-serialize') + msgobj.val(); $jq.each($jq("#imglist input[type='hidden']"), (i, v) => { data = data + "&" + v.getAttribute("name") + "="; }) $jq.ajax({ type: 'POST', url: $jq('#comiis_foot_menu_beautify_big .reply_user_content').attr('data-reply-action') + '&handlekey=fastposts&loc=1&inajax=1', data: data, timeout: 5000, dataType: 'xml', success: function (s) { popup2.mask_close(); console.log(s.lastChild.firstChild.nodeValue); evalscript(s.lastChild.firstChild.nodeValue); if (handle_error(s)) { return; } $jq(s.lastChild.firstChild.nodeValue).click(); $jq("#needmessage").val(""); $jq("#comiis_head").click(); $jq('#comiis_foot_menu_beautify_big li[data-attr="发表"] input').val("发表"); $jq('#comiis_foot_menu_beautify_big li[data-attr="发表"] input').attr("data-text", "false"); $jq("#comiis_foot_menu_beautify li[data-attr='回帖'] input").attr("placeholder", "发帖千百度,文明第一步"); $jq(document).scrollTop($jq(document).height()); }, error: (e) => { popup2.mask_close(); console.log(e); /* window.location.href = $jq('#comiis_foot_menu_beautify_big .reply_user_content').attr('data-reply-action'); */ popup2.toast("连接超时,网络异常"); } }) } return false; }); $jq(document).on('click', ".comiis_postli_times .dialog_reply[datahref*=reply]", function (e) { /* 回复按钮新事件 */ var obj = $jq(this); $jq("#comiis_foot_menu_beautify_big").attr("data-model", "reply"); popup2.mask_loading_show(); console.log($jq(this)); $jq.ajax({ type: 'GET', url: obj.attr('datahref') + '&inajax=1', dataType: 'xml', timeout: 5000, success: function (s) { popup2.mask_close(); console.log(s.lastChild.firstChild.nodeValue); if (handle_error(s)) { return; } let requestDOM = $jq("<div>" + s.lastChild.firstChild.nodeValue + "</div>"); let reply_url = requestDOM.find(".comiis_tip .tip_tit a").attr("href"); let reply_user = requestDOM.find(".comiis_tip span.f_0").text(); let reply_content = requestDOM.find("input[name='noticeauthormsg']").val(); let reply_action = requestDOM.find("#postforms").attr('action'); let reply_serialize = requestDOM.find("#postforms").serialize(); $jq("#comiis_foot_menu_beautify_big .reply_user_content").text(`回复 ${reply_user}: ${reply_content}`); $jq("#comiis_foot_menu_beautify_big .reply_user_content").show(); $jq("#comiis_foot_menu_beautify li[data-attr='回帖'] input").click(); $jq("#comiis_foot_menu_beautify li[data-attr='回帖'] input").focus(); $jq("#fastpostsubmitline input").val("回复"); $jq("#comiis_foot_menu_beautify_big .fastpostform_new a").attr("href", reply_url); $jq("#comiis_foot_menu_beautify_big .reply_user_content").attr("data-reply-url", reply_url); $jq("#comiis_foot_menu_beautify_big .reply_user_content").attr("data-reply-action", reply_action); $jq("#comiis_foot_menu_beautify_big .reply_user_content").attr("data-reply-serialize", reply_serialize); window.tempReplyBtnNode = obj; $jq("#needmessage").val(obj.attr("data-text") ? obj.attr("data-text") : ""); }, error: (e) => { popup2.mask_close(); console.log(e); /* window.location.href = obj.attr('datahref'); */ popup2.toast("连接超时,网络异常"); } }) return false; }); $jq(document).on("click", function (e) { /* 全局点击事件 */ if (document.querySelector("#comiis_foot_menu_beautify li[data-attr='回帖']").outerHTML.indexOf(e.target.outerHTML) != -1) { /* 显示回帖内容 */ $jq("#comiis_foot_menu_beautify").hide(); $jq("#comiis_foot_menu_beautify_big").show(); $jq("#needmessage").focus(); } else if (window.event && !utils.checkClickInDOM(document.querySelector("#comiis_foot_menu_beautify_big"))) { /* 不在区域内 */ $jq("#comiis_foot_menu_beautify").show(); $jq("#comiis_foot_menu_beautify_big").hide(); if ($jq("#comiis_foot_menu_beautify_big").attr("data-model") == "reply") { /* 当前编辑框模式为回复某人评论 */ $jq("#comiis_foot_menu_beautify_big").attr("data-model", "comment"); $jq("#fastpostsubmitline input").val("发表"); $jq("#comiis_foot_menu_beautify_big .fastpostform_new a").attr("href", form_url); $jq("#comiis_foot_menu_beautify_big .reply_area .reply_user_content").text(""); $jq("#comiis_foot_menu_beautify_big .reply_area .reply_user_content").hide(); $jq("#comiis_foot_menu_beautify_big .reply_area .reply_user_content").attr("data-reply-url", ""); $jq("#comiis_foot_menu_beautify_big .reply_area .reply_user_content").attr("data-reply-action", ""); $jq("#comiis_foot_menu_beautify_big .reply_area .reply_user_content").attr("data-reply-serialize", ""); if (window.tempReplyBtnNode) { window.tempReplyBtnNode.attr("data-text", $jq("#needmessage").val()); $jq("#needmessage").val(""); $jq('#comiis_foot_menu_beautify_big li[data-attr="发表"] input').attr("data-text", "false"); $jq("#comiis_foot_menu_beautify li[data-attr='回帖'] input").attr("placeholder", "发帖千百度,文明第一步"); } } } }) $jq("#comiis_foot_menu_beautify_big .menu_body").hide(); $jq("#comiis_foot_menu_beautify_big .menu_icon a").on("click", function (e) { /* 菜单图标点击事件 */ if ($jq(this).attr("class") && $jq(this).attr("class").indexOf("f_0") != -1) { $jq("#comiis_foot_menu_beautify_big .menu_body").hide(); $jq("#comiis_foot_menu_beautify_big .menu_icon a").removeClass("f_0"); } else { $jq("#comiis_foot_menu_beautify_big .menu_body").show(); $jq("#comiis_foot_menu_beautify_big .menu_icon a").removeClass("f_0"); $jq(this).addClass("f_0"); } }) $jq("#comiis_foot_menu_beautify_big .menu_icon a.comiis_pictitle").on("click", function (e) { /* 菜单-图片点击事件 */ $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_post_tab").hide(); $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_insert_ubb_tab").hide(); $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab").show(); }) $jq("#comiis_foot_menu_beautify_big .menu_icon a.comiis_smile").on("click", function (e) { /* 菜单-表情点击事件 */ $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab").hide(); $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_insert_ubb_tab").hide(); $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_post_tab").show(); let smileDOM = $jq("#comiis_foot_menu_beautify_big .menu_body .comiis_bqbox"); if (smileDOM.attr("data-isLoaded") != 1) { smileDOM.attr("data-isLoaded", 1) $jq.each(smileDOM.find("img"), (i, v) => { let data_src = v.getAttribute("data-src"); if (data_src) { v.setAttribute("src", data_src); } }) } }) $jq("#comiis_foot_menu_beautify_big .menu_icon a.commis_insert_bbs").on("click", function (e) { /* 菜单-插入点击事件 */ $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_post_tab").hide(); $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_pictitle_tab").hide(); $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_insert_ubb_tab").show(); let insertBBSDOM = $jq("#comiis_foot_menu_beautify_big .menu_body #comiis_bbs_tab"); }) $jq("#comiis_foot_menu_beautify_big #comiis_smilies_key li").on("click", function (e) { /* 菜单-表情-点击事件 */ $jq("#comiis_foot_menu_beautify_big #comiis_smilies_key li a").removeClass(); $jq(this).find("a").addClass("bg_f b_l b_r"); $jq("#comiis_post_tab div.swiper-wrapper.bqbox_c.comiis_optimization .swiper-slide").hide().eq($jq(this).index()).fadeIn(); }) $jq("#comiis_foot_menu_beautify_big #comiis_pictitle_tab #comiis_pictitle_key li").on("click", function (e) { /* 菜单-图片-点击事件 */ /* let currentDOM = $jq(this); */ $jq("#comiis_foot_menu_beautify_big #comiis_pictitle_tab #comiis_pictitle_key li").removeClass("bg_f"); $jq(this).addClass("bg_f"); $jq("#comiis_foot_menu_beautify_big #comiis_pictitle_tab div.comiis_upbox").hide().eq($jq(this).index()).fadeIn(); }) function chartbedWaterMarkEvent() { /* 图床-水印-设置的各种事件 */ $jq("label[for='autowatermarkdefault']").on("click", function () { let obj = $jq(this); let code_obj = obj.find("code"); if (code_obj.hasClass("comiis_checkbox_close")) { /* 开 */ code_obj.removeClass("comiis_checkbox_close"); GM_setValue("chartBedWaterMarkAutoDefault", true); } else { /* 关 */ code_obj.addClass("comiis_checkbox_close"); GM_setValue("chartBedWaterMarkAutoDefault", false); } }) $jq("label[for='addwatermark']").on("click", function () { let obj = $jq(this); let code_obj = obj.find("code"); if (code_obj.hasClass("comiis_checkbox_close")) { /* 开 */ code_obj.removeClass("comiis_checkbox_close"); GM_setValue("chartBedAddWaterMark", true); } else { /* 关 */ code_obj.addClass("comiis_checkbox_close"); GM_setValue("chartBedAddWaterMark", false); } }) $jq("#watermarktext").on("input propertychange", function () { GM_setValue("chartBedWaterMarkText", $jq(this).val()); }) $jq("#watermarkfontcolor").on("input propertychange", function () { let value = $jq(this).val(); GM_setValue("chartBedWaterMarkFontColor", value); }) $jq("#watermarkglobalalpha").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 0.7; } else if (value > max) { value = 1; } else if (value < min) { value = 0; } GM_setValue("chartBedWaterGlobalAlpha", value); }) $jq("#watermarkfontsize").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 16; } else if (value > max) { value = 100; } else if (value < min) { value = 1; } GM_setValue("chartBedWaterMarkFontSize", value); }) $jq("#watermarkxmovedistance").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 30; } else if (value > max) { value = 300; } else if (value < min) { value = 1; } GM_setValue("chartBedWaterXMoveDistance", value); }) $jq("#watermarkymovedistance").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 30; } else if (value > max) { value = 300; } else if (value < min) { value = 30; } GM_setValue("chartBedWaterYMoveDistance", value); }) $jq("#watermarkrotationangle").on("input propertychange", function () { let value = parseInt($jq(this).val()); let max = parseInt($jq(this).attr("max")); let min = parseInt($jq(this).attr("min")); if (isNaN(value)) { value = 45; } else if (value > max) { value = 360; } else if (value < min) { value = -360; } GM_setValue("chartBedWaterMarkRotationAngle", value); }) if (GM_getValue("chartBedAddWaterMark")) { /* 初始化默认值 */ $jq("label[for='addwatermark'] code").removeClass("comiis_checkbox_close"); } if (GM_getValue("chartBedWaterMarkAutoDefault")) { /* 初始化默认值 */ $jq("label[for='autowatermarkdefault'] code").removeClass("comiis_checkbox_close"); } $jq("#watermarktext").val(GM_getValue("chartBedWaterMarkText", "MT论坛")).trigger("propertychange"); $jq("#watermarkfontsize").val(GM_getValue("chartBedWaterMarkFontSize", 16)).trigger("propertychange"); $jq("#watermarkfontcolor").val(GM_getValue("chartBedWaterMarkFontColor", "#000000")).trigger("propertychange"); $jq("#watermarkglobalalpha").val(GM_getValue("chartBedWaterGlobalAlpha", 0.7)).trigger("propertychange"); $jq("#watermarkxmovedistance").val(GM_getValue("chartBedWaterXMoveDistance", 30)).trigger("propertychange"); $jq("#watermarkymovedistance").val(GM_getValue("chartBedWaterYMoveDistance", 30)).trigger("propertychange"); $jq("#watermarkrotationangle").val(GM_getValue("chartBedWaterMarkRotationAngle", 45)).trigger("propertychange"); } tryCatch(mobile.editorChartBed); tryCatch(mobile.quickUBB.insertQuickReplyUBB); tryCatch(mobile.editorOptimizationOffDefaultBottomReplyBtnClickEvent); tryCatch(chartbedWaterMarkEvent); }, editorOptimizationFull() { /* 编辑器优化-完整版 */ if (!GM_getValue("v50") || !window.location.href.match(mt_config.rexp.post_forum) && !window.location.href.match(mt_config.rexp.edit_forum) && !window.location.href.match(mt_config.rexp.reply_forum) /* !window.location.href.match(mt_config.rexp.forum_post) */ ) { return }; tryCatch(mobile.editorChartBed); tryCatch(mobile.previewPostForum); tryCatch(mobile.quickUBB.insertReplayUBB); GM_addStyle(` .f_c, .f_c a, .ntc_body{ color: #000000 !important; } input::placeholder, textarea::placeholder { color: #cfcfcf; } #needsubject::placeholder{ font-weight: bold; } #needmessage::placeholder{ } #postform #comiis_mh_sub{ height: 60px; display: flex; align-items: center; } #postform #comiis_post_tab{ display: inherit; width: 100%; } #postform .comiis_sendbtn{ padding:0 12px; display: flex !important; -webkit-box-align: center; align-items: center; } #postform .f_f{ color: #ffffff !important; } #postform #comiis_post_tab .bg_f.b_b.cl:nth-child(2) .comiis_atlist a:link, #postform #comiis_post_tab .bg_f.b_b.cl:nth-child(2) .comiis_atlist a:visited, #postform #comiis_post_tab .bg_f.b_b.cl:nth-child(2) .comiis_atlist a:hover{ color: #333333 !important; } #postform .comiis_post_from .comiis_post_ico.comiis_minipost_icot{ position: fixed; display: inline-table; z-index: 90; left: 0; right: 0; bottom: 0; width: 100%; overflow: hidden; padding: 0; } #postform .comiis_post_from #comiis_post_tab .comiis_bqbox{ height:200px; } #postform .comiis_post_from #comiis_post_tab .comiis_smiley_box{ height:150px; } /* #postform .comiis_post_from #comiis_post_tab .comiis_input_style.cl:nth-child(1){ height:345px; } */ #postform .comiis_post_from #comiis_post_tab .comiis_input_style .comiis_post_urlico{ overflow-y: auto; height: 110px; } #postform .comiis_post_from #comiis_post_tab .comiis_smiley_box .comiis_optimization{ display: block; overflow-y: auto; height: 100%; } #postform #comiis_post_tab .comiis_input_style .comiis_xifont{ width: -webkit-fill-available; } #postform #comiis_post_tab .comiis_input_style .comiis_xifont i.comiis_font{ font-size: 16px; line-height: inherit; padding-top: 0px; } #postform #comiis_post_tab .comiis_input_style .styli_h10{ display:none; } .gm_plugin_chartbed .comiis_chartbed_luntan, .gm_plugin_chartbed .comiis_chartbed_kggzs, .gm_plugin_chartbed .comiis_chartbed_hello, .gm_plugin_chartbed .comiis_chartbed_z4a, .gm_plugin_chartbed .comiis_chartbed_history{ height: 140px; overflow-y: auto; flex-direction: column; } #comiis_pictitle_key { display: flex; top: 0px; left: 0px; height: 42px; line-height: 42px; overflow: hidden; background: #f8f8f8; } #comiis_pictitle_key a { color: #333 !important; padding: 0px 10px; } #comiis_mh_sub{ height: auto !important; } #comiis_mh_sub .swiper-wrapper.comiis_post_ico{ flex-flow: wrap; } #comiis_mh_sub a{ margin:5px 0px; } #comiis_post_tab .comiis_over_box{ max-height: 225px; } `); $jq(".comiis_scrollTop_box").parent().hide(); $jq("#postform .comiis_post_from.mt15").css("cssText", "margin-top:0px !important"); let comiis_post_tab = $jq("#postform .comiis_post_from #comiis_post_tab"); $jq("#postform .comiis_post_from .comiis_post_ico").append(comiis_post_tab); comiis_post_tab.remove(); textarea_scrollHeight = () => {}; $jq(".comiis_btnbox").hide(); if ($jq(".comiis_scrollTop_box").length) { $jq("#htmlon").parent().append(` <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">发表帖子</div> <div class="styli_r"> <input type="checkbox" name="usesig" value="1" class="comiis_checkbox_key"> <label for="" class="wauto"> <code class="bg_f b_ok comiis_checkbox comiis_choose_post comiis_checkbox_close"></code> </label> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">发投票</div> <div class="styli_r"> <input type="checkbox" name="usesig" value="1" class="comiis_checkbox_key"> <label for="" class="wauto"> <code class="bg_f b_ok comiis_checkbox comiis_choose_vote comiis_checkbox_close"></code> </label> </div> </li> `); if ($jq(".comiis_scrollTop_box .swiper-slide a:contains('发表帖子')").attr("class") != "f_c") { $jq(".comiis_checkbox.comiis_choose_post").removeClass("comiis_checkbox_close"); } else { $jq(".comiis_checkbox.comiis_choose_vote").removeClass("comiis_checkbox_close"); } $jq(".comiis_checkbox.comiis_choose_post").on("click", function () { let obj = $jq(this); obj.addClass("comiis_checkbox_close"); $jq(".comiis_checkbox.comiis_choose_vote").addClass("comiis_checkbox_close"); obj.removeClass("comiis_checkbox_close"); window.location.href = window.location.href.replace("&special=1", ''); }); $jq(".comiis_checkbox.comiis_choose_vote").on("click", function () { let obj = $jq(this); obj.addClass("comiis_checkbox_close"); $jq(".comiis_checkbox.comiis_choose_post").addClass("comiis_checkbox_close"); obj.removeClass("comiis_checkbox_close"); window.location.href = window.location.href + "&special=1"; }); } let btn_del = $jq(".comiis_btnbox .comiis_btn.bg_del"); let btn_save = $jq(".comiis_btnbox button#postsubmit:contains('保存')"); let btn_post = $jq(".comiis_btnbox button#postsubmit:contains('发表')"); let btn_save_caogao = $jq(".comiis_btnbox button#postsubmit em:contains('保存草稿')"); let btn_reply = $jq(".comiis_btnbox button#postsubmit:contains('回复')"); GM_addStyle(` #comiis_head .header_y{ display: flex; align-content: center; align-items: center; justify-content: flex-end; height: 100%; } #comiis_head .header_y input{ border: transparent; background: transparent; text-align: center; margin: 0px 5px; } #comiis_head .header_y input[value="删除"]{ color: #dd0000; } #comiis_head .header_y input[value="保存"]{ color: #b0ff6a; } #comiis_head .header_y input[value="保存草稿"]{ color: #FF9900; } #comiis_head .header_y input[value="发表"]{ color: #b0ff6a; } #comiis_head .header_y input[value="回复"]{ color: #b0ff6a; } #comiis_post_tab{ color:rgb(0,0,0); } .gm_plugin_chartbed .delImg a, .gm_plugin_chartbed .p_img a{ padding: 0; } .gm_plugin_chartbed .delImg a i{ line-height: inherit; } #filedata, #filedata_kggzs, #filedata_hello, #filedata_kggzs{ display:none; } `); if (btn_del.length) { $jq("#comiis_head .header_y").append($jq(`<input class="new_btn_del" type="button" value="删除">`)); $jq("#comiis_head .header_y .new_btn_del").on("click", function () { popup2.confirm({ "text": "<p>是否删除帖子?</p>", "callback": () => { popup2.mask_close(); popup2.confirm_close(); comiis_delthread(); }, "mask": true, }) }); } if (btn_save_caogao.length) { $jq("#comiis_head .header_y").append($jq(`<input class="new_btn_save_temp" type="button" value="保存草稿">`)); $jq("#comiis_head .header_y .new_btn_save_temp").on("click", function () { btn_save_caogao.click(); }); } if (btn_save.length) { $jq("#comiis_head .header_y").append($jq(`<input class="new_btn_save" type="button" value="保存">`)); $jq("#comiis_head .header_y .new_btn_save").on("click", function () { btn_save.click(); }); } if (btn_post.length) { $jq("#comiis_head .header_y").append($jq(`<input class="new_btn_post" type="button" value="发表">`)); $jq("#comiis_head .header_y .new_btn_post").on("click", function () { $jq("#postsave").val(0); btn_post.click(); }); } if (btn_reply.length) { $jq("#comiis_head .header_y").append($jq(`<input class="new_btn_reply" type="button" value="回复">`)); $jq("#comiis_head .header_y .new_btn_reply").on("click", function () { btn_reply.click(); }); } var $tar = document.querySelector("#postform > div > div.comiis_post_ico.comiis_minipost_icot"); var MutationObserver = window.MutationObserver || window.webkitMutationObserver || window.MozMutationObserver; var recordHeight = 0; var mutationObserver = new MutationObserver(function (mutations) { let height = window.getComputedStyle($tar).getPropertyValue('height'); if (height === recordHeight) { return; } recordHeight = height; let needMessageSeeHeight = document.documentElement.clientHeight - document.querySelector("#postform > div > div.comiis_post_ico.comiis_minipost_icot").getBoundingClientRect().height - document.querySelector("#needmessage").getBoundingClientRect().top; if (needMessageSeeHeight - 5 < 100) { $jq("#needmessage").css("height", "100px"); $jq(".gm_plugin_previewpostforum_html.double-preview .comiis_over_box").css("height", "100px"); } else { console.log("设置输入框、预览高度", needMessageSeeHeight - 5); $jq("#needmessage").css("height", needMessageSeeHeight - 5 + "px"); $jq(".gm_plugin_previewpostforum_html.double-preview .comiis_over_box").css("height", needMessageSeeHeight - 5 + "px"); } /* 之后更新外部容器等操作 */ }); mutationObserver.observe($tar, { childList: true, /* 子节点的变动(新增、删除或者更改) */ attributes: true, /* 属性的变动 */ characterData: true, /* 节点内容或节点文本的变动 */ subtree: true /* 是否将观察器应用于该节点的所有后代节点 */ }) $jq(window).on("resize", function (e) { let needMessageSeeHeight = document.documentElement.clientHeight - document.querySelector("#postform > div > div.comiis_post_ico.comiis_minipost_icot").getBoundingClientRect().height - document.querySelector("#needmessage").getBoundingClientRect().top; if (needMessageSeeHeight - 5 < 100) { $jq("#needmessage").css("height", "100px"); $jq(".gm_plugin_previewpostforum_html.double-preview .comiis_over_box").css("height", "100px"); } else { console.log("设置输入框、预览高度", needMessageSeeHeight - 5); $jq("#needmessage").css("height", needMessageSeeHeight - 5 + "px"); $jq(".gm_plugin_previewpostforum_html.double-preview .comiis_over_box").css("height", needMessageSeeHeight - 5 + "px"); } }) let before_image_luntan = $jq(".gm_plugin_chartbed .comiis_over_box.comiis_input_style #imglist"); $jq(".gm_plugin_chartbed").append($jq(` <div class='comiis_upbox comiis_chartbed_luntan'></div> <div class='comiis_upbox comiis_chartbed_kggzs' style='display: none;'> <ul id="imglist_kggzs" class="comiis_post_imglist cl"> <li class="up_btn"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_kggzs" accept="image/*" multiple> </li> </ul> </div> <div class='comiis_upbox comiis_chartbed_hello' style='display: none;'> <ul id="imglist_hello" class="comiis_post_imglist cl"> <li class="up_btn"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_hello" accept="image/*" multiple> </li> </ul> </div> <div class='comiis_upbox comiis_chartbed_z4a' style='display: none;'> <ul id="imglist_z4a" class="comiis_post_imglist cl"> <li class="up_btn"> <a href="javascript:;" class="bg_e b_ok f_d"> <i class="comiis_font"></i> </a> <input type="file" name="Filedata" id="filedata_z4a" accept="image/*" multiple> </li> </ul> </div> <div class='comiis_upbox comiis_chartbed_history' style='display: none;'> <ul id="imglist_history" class="comiis_post_imglist cl"> </ul> </div> <div class='comiis_upbox comiis_chartbed_settings' style='display: none;height: 170px;overflow-y: auto;'> <ul id="imglist_settings" class="cl"> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">水印</div> <div class="styli_r"> <input type="checkbox" name="addwatermark" id="addwatermark" value="1" class="comiis_checkbox_key" checked="checked" style="display: none;"> <label for="addwatermark" class="wauto"><code class="bg_f b_ok comiis_checkbox comiis_checkbox_close"></code></label> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">自动添加水印并上传</div> <div class="styli_r"> <input type="checkbox" name="autowatermarkdefault" id="autowatermarkdefault" value="1" class="comiis_checkbox_key" checked="checked" style="display: none;"> <label for="autowatermarkdefault" class="wauto"><code class="bg_f b_ok comiis_checkbox comiis_checkbox_close"></code></label> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">文字</div> <div class="styli_r"> <input type="text" name="watermarktext" id="watermarktext" placeholder="请输入需要添加水印的文字"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">颜色</div> <div class="styli_r"> <input type="color" style="width: 60px;border-radius: unset;padding: unset;margin-right: 32px;" name="watermarkfontcolor" id="watermarkfontcolor"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">大小</div> <div class="styli_r"> <input type="number" style="width:60px;" name="watermarkfontsize" id="watermarkfontsize" placeholder="单位px" value="" min="1" max="300" step="1"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">透明度</div> <div class="styli_r"> <input type="number" style="width:60px;" name="watermarkglobalalpha" id="watermarkglobalalpha" placeholder="0~1" value="" min="0" max="1" step="0.01"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">左右间距</div> <div class="styli_r"> <input type="number" style="width:60px;" name="watermarkxmovedistance" id="watermarkxmovedistance" placeholder="1~200" value="" min="1" max="200" step="1"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">上下间距</div> <div class="styli_r"> <input type="number" style="width:60px;" name="watermarkymovedistance" id="watermarkymovedistance" placeholder="1~200" value="" min="1" max="200" step="1"> </div> </li> <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">旋转角度</div> <div class="styli_r"> <input type="number" style="width:60px;" name="watermarkrotationangle" id="watermarkrotationangle" placeholder="-360~360" value="" min="-360" max="360" step="1"> </div> </li> </ul> </div> <div class="bqbox_t"> <ul id="comiis_pictitle_key"> <li class="bg_f" id="comiis_pictitle_tab_n_1"><a href="javascript:;" class="">论坛</a></li> <li class="" id="comiis_pictitle_tab_n_2"><a href="javascript:;" class="">康哥图床</a></li> <li class="" id="comiis_pictitle_tab_n_3"><a href="javascript:;" class="">Hello图床</a></li> <li class="" id="comiis_pictitle_tab_n_4"><a href="javascript:;" class="">Z4A图床</a></li> <li class="" id="comiis_pictitle_tab_n_5"><a href="javascript:;" class="">历史图片</a></li> <li class="" id="comiis_pictitle_tab_n_6"><a href="javascript:;" class="">设置</a></li> </ul> </div>`)); $jq(".gm_plugin_chartbed .comiis_chartbed_luntan").append(before_image_luntan); $jq("#filedata").attr("multiple", true); /* 添加上传多个文件功能 */ $jq(".gm_plugin_chartbed .comiis_over_box.comiis_input_style").remove(); $jq("#comiis_pictitle_key li").on("click", function () { /* 图床-各个菜单点击事件 */ $jq("#comiis_pictitle_key li").removeClass("bg_f"); $jq(this).addClass("bg_f"); $jq(".gm_plugin_chartbed .comiis_upbox").hide().eq($jq(this).index()).fadeIn(); }) function chartbedWaterMarkEvent() { /* 图床-水印-设置的各种事件 */ $jq("label[for='autowatermarkdefault']").on("click", function () { let obj = $jq(this); let code_obj = obj.find("code"); if (code_obj.hasClass("comiis_checkbox_close")) { /* 开 */ code_obj.removeClass("comiis_checkbox_close"); GM_setValue("chartBedWaterMarkAutoDefault", true); } else { /* 关 */ code_obj.addClass("comiis_checkbox_close"); GM_setValue("chartBedWaterMarkAutoDefault", false); } }) $jq("label[for='addwatermark']").on("click", function () { let obj = $jq(this); let code_obj = obj.find("code"); if (code_obj.hasClass("comiis_checkbox_close")) { /* 开 */ code_obj.removeClass("comiis_checkbox_close"); GM_setValue("chartBedAddWaterMark", true); } else { /* 关 */ code_obj.addClass("comiis_checkbox_close"); GM_setValue("chartBedAddWaterMark", false); } }) $jq("#watermarktext").on("input propertychange", function () { GM_setValue("chartBedWaterMarkText", $jq(this).val()); }) $jq("#watermarkfontcolor").on("input propertychange", function () { let value = $jq(this).val(); GM_setValue("chartBedWaterMarkFontColor", value); }) $jq("#watermarkglobalalpha").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 0.7; } else if (value > max) { value = 1; } else if (value < min) { value = 0; } GM_setValue("chartBedWaterGlobalAlpha", value); }) $jq("#watermarkfontsize").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 16; } else if (value > max) { value = 100; } else if (value < min) { value = 1; } GM_setValue("chartBedWaterMarkFontSize", value); }) $jq("#watermarkxmovedistance").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 30; } else if (value > max) { value = 300; } else if (value < min) { value = 1; } GM_setValue("chartBedWaterXMoveDistance", value); }) $jq("#watermarkymovedistance").on("input propertychange", function () { let value = parseFloat($jq(this).val()); let max = parseFloat($jq(this).attr("max")); let min = parseFloat($jq(this).attr("min")); if (isNaN(value)) { value = 30; } else if (value > max) { value = 300; } else if (value < min) { value = 30; } GM_setValue("chartBedWaterYMoveDistance", value); }) $jq("#watermarkrotationangle").on("input propertychange", function () { let value = parseInt($jq(this).val()); let max = parseInt($jq(this).attr("max")); let min = parseInt($jq(this).attr("min")); if (isNaN(value)) { value = 45; } else if (value > max) { value = 360; } else if (value < min) { value = -360; } GM_setValue("chartBedWaterMarkRotationAngle", value); }) if (GM_getValue("chartBedAddWaterMark")) { /* 初始化默认值 */ $jq("label[for='addwatermark'] code").removeClass("comiis_checkbox_close"); } if (GM_getValue("chartBedWaterMarkAutoDefault")) { /* 初始化默认值 */ $jq("label[for='autowatermarkdefault'] code").removeClass("comiis_checkbox_close"); } $jq("#watermarktext").val(GM_getValue("chartBedWaterMarkText", "MT论坛")).trigger("propertychange"); $jq("#watermarkfontsize").val(GM_getValue("chartBedWaterMarkFontSize", 16)).trigger("propertychange"); $jq("#watermarkfontcolor").val(GM_getValue("chartBedWaterMarkFontColor", "#000000")).trigger("propertychange"); $jq("#watermarkglobalalpha").val(GM_getValue("chartBedWaterGlobalAlpha", 0.7)).trigger("propertychange"); $jq("#watermarkxmovedistance").val(GM_getValue("chartBedWaterXMoveDistance", 30)).trigger("propertychange"); $jq("#watermarkymovedistance").val(GM_getValue("chartBedWaterYMoveDistance", 30)).trigger("propertychange"); $jq("#watermarkrotationangle").val(GM_getValue("chartBedWaterMarkRotationAngle", 45)).trigger("propertychange"); } let top_height = $jq("#comiis_head").length ? parseInt($jq("#comiis_head").css("height")) : 0; let fatie_toupiao = $jq("#comiis_sub").length ? parseInt($jq("#comiis_sub").css("height")) : 0; let extra_margin_bottom = $jq("#pollm_c_1").length ? 60 : 0; let title_height = $jq(".comiis_styli.comiis_flex").length ? parseInt($jq(".comiis_styli.comiis_flex").css("height")) : 0; let nav_bottom_height = $jq(".comiis_post_ico.comiis_minipost_icot").length ? parseInt($jq(".comiis_post_ico.comiis_minipost_icot").css("height")) : 0; $jq("#needmessage").css("height", `${window.screen.height-top_height-fatie_toupiao-48-title_height-nav_bottom_height-10}px`); $jq("#needmessage").css("margin-bottom", extra_margin_bottom + "px"); if ($jq("#imglist li").length != 1) { $jq(".comiis_pictitle i").before($jq(`<span class="icon_msgs bg_del" style="border-radius: 15px;display:block;">${$jq("#imglist li").length-1}</span>`)) } $jq("#needsubject").attr("placeholder", "请输入完整的帖子标题 (1-80个字)"); $jq("#needmessage").attr("placeholder", "来吧,尽情发挥吧..."); tryCatch(mobile.selectPostingSection); tryCatch(chartbedWaterMarkEvent); }, editorOptimizationOffDefaultBottomReplyBtnClickEvent() { /* 取消绑定回复底部回复按钮的默认事件 */ $jq.each($jq(".comiis_postli_times .dialog[href*=reply]"), (i, v) => { /* 把回复按钮的href改成JavaScript:; */ let href = v.getAttribute("href"); if (href != "javascript:;") { v.setAttribute("class", "f_c dialog_reply"); v.setAttribute("datahref", href); v.setAttribute("href", "javascript:;"); } }) }, identifyLinks() { /* 识别链接 */ if (!GM_getValue("v2")) { return } /*TEXT link to Clickable Hyperlink*/ var clearLink, excludedTags, filter, linkMixInit, linkPack, linkify, observePage, observer, setLink, url_regexp, xpath; url_regexp = /((https?:\/\/|www\.)[\x21-\x7e]+[\w\/]|(\w[\w._-]+\.(com|cn|org|net|info|tv|cc))(\/[\x21-\x7e]*[\w\/])?|ed2k:\/\/[\x21-\x7e]+\|\/|thunder:\/\/[\x21-\x7e]+=)/gi; clearLink = function (a) { var b; a = null != (b = a.originalTarget) ? b : a.target; if (null != a && "a" === a.localName && -1 !== a.className.indexOf("texttolink") && (b = a.getAttribute("href"), 0 !== b.indexOf("http") && 0 !== b.indexOf("ed2k://") && 0 !== b.indexOf("thunder://"))) return a.setAttribute("href", "http://" + b) }; document.addEventListener("mouseover", clearLink); setLink = function (a) { /* Uncaught TypeError: a.parentNode.className.indexOf is not a function */ if (typeof a != "object") { return } /* 看不得报错,增加判断 */ if (null != a && -1 === a.parentNode.className.indexOf("texttolink") && "#cdata-section" !== a.nodeName) { var b = a.textContent.replace(url_regexp, '<a href="$1" target="_blank" class="texttolink">$1</a>'); if (a.textContent.length !== b.length) { var c = document.createElement("span"); c.innerHTML = b; console.log(`识别: ${c.querySelector("a")}`); return a.parentNode.replaceChild(c, a) } } }; excludedTags = "a svg canvas applet input button area pre embed frame frameset head iframe img option map meta noscript object script style textarea code".split(" "); xpath = "//text()[not(ancestor::" + excludedTags.join(") and not(ancestor::") + ")]"; filter = new RegExp("^(" + excludedTags.join("|") + ")$", "i"); linkPack = function (a, b) { var c, d; if (b + 1E4 < a.snapshotLength) { var e = c = b; for (d = b + 1E4; b <= d ? c <= d : c >= d; e = b <= d ? ++c : --c) setLink(a.snapshotItem(e)); setTimeout(function () { return linkPack(a, b + 1E4) }, 15) } else for (e = c = b, d = a.snapshotLength; b <= d ? c <= d : c >= d; e = b <= d ? ++c : --c) setLink(a.snapshotItem(e)) }; linkify = function (a) { a = document.evaluate(xpath, a, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); return linkPack(a, 0) }; observePage = function (a) { for (a = document.createTreeWalker(a, NodeFilter.SHOW_TEXT, { acceptNode: function (a) { if (!filter.test(a.parentNode.localName)) return NodeFilter.FILTER_ACCEPT } }, !1); a.nextNode();) setLink(a.currentNode) }; observer = new window.MutationObserver(function (a) { var b, c; var d = 0; for (b = a.length; d < b; d++) { var e = a[d]; if ("childList" === e.type) { var g = e.addedNodes; var f = 0; for (c = g.length; f < c; f++) e = g[f], observePage(e) } } }); linkMixInit = function () { /* if (window === window.top && "" !== window.document.title) return linkify(document.body), observer.observe(document.body, { childList: !0, subtree: !0 }) 修改为可在iframe内执行 */ return linkify(document.body), observer.observe(document.body, { childList: !0, subtree: !0 }) }; var clearlinkF = function (a) { var url = a.getAttribute("href"); if (0 !== url.indexOf("http") && 0 !== url.indexOf("ed2k://") && 0 !== url.indexOf("thunder://")) return a.setAttribute("href", "http://" + url) }, clearlinkE = function () { for (var a = document.getElementsByClassName("texttolink"), b = 0; b < a.length; b++) clearlinkF(a[b]) }; setTimeout(clearlinkE, 1500); setTimeout(linkMixInit, 100); }, lanzouFunction() { /* 蓝奏功能(登录(不可用)、上传、查看历史上传、删除) */ if (!GM_getValue("v47") || !window.location.href.match(mt_config.rexp.bbs) ) { return }; var lanZouViewShowLock = false; GM_addStyle(` .xtiper_content.xmin .loginbox{ padding: 15px; font-size: 14px; } .xtiper_content.xmin .loginbox div{ padding-bottom: 10px; } .xtiper_content.xmin .loginbox .xinput.xful{ width: 100%; resize: none; -webkit-appearance: none; border-radius: 0; height: 34px; padding: 0 8px; transition-property: box-shadow,border-color; -webkit-transition: 0.2s ease-in; transition: 0.2s ease-in; border: 1px solid #bebebe; box-sizing: border-box; font-size: 14px; color: #333; } .xtiper_content.xmin .loginbox .xbutton.xful.xblue{ background-image: none; color: #fff; border: 1px solid #0e73e9; background-color: #0e73e9; width: 100%; box-shadow: inset 0px 0px 2px #fff; -webkit-box-shadow: inset 0px 0px 2px #fff; -moz-box-shadow: inset 0px 0px 2px #fff; padding: 0 18px; height: 38px; cursor: pointer; font-size: 14px; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .xtiper_content.xmin .loginbox .xinput.xful:focus, .xtiper_content.xmin .loginbox .xinput.xful:hover{ border-color: #7a9cd3; box-shadow: inset 0 1px 1px rgb(0 0 0 / 8%), 0 0 8px rgb(122 156 211 / 60%); } .xtiper_content.xmin .loginbox .xbutton.xful.xblue, .xtiper_content.xmin .loginbox .xbutton.xful.xblue:hover{ background-color: #005ecd; } .xtiper_content.xmin .loginbox .xbutton.xful.xblue:active { box-shadow: inset 0px 0px 3px rgb(0 0 0 / 30%); -o-box-shadow: inset 0px 0px 3px rgba(0,0,0,0.3); -webkit-box-shadow: inset 0px 0px 3px rgb(0 0 0 / 30%); -moz-box-shadow: inset 0px 0px 3px rgba(0,0,0,0.3); } `); const lanzou = { storage: { getUser() { return GM_getValue("lanzouFunctionUser") ? GM_getValue("lanzouFunctionUser") : ""; }, getPwd() { return GM_getValue("lanzouFunctionPwd") ? GM_getValue("lanzouFunctionPwd") : ""; }, getFormhash() { return GM_getValue("lanzouFunctionFormhash") ? GM_getValue("lanzouFunctionFormhash") : undefined; }, getUploadFiles() { return GM_getValue("lanzouFunctionUploadFiles") ? GM_getValue("lanzouFunctionUploadFiles") : []; }, setUser(user) { GM_setValue("lanzouFunctionUser", user); }, setPwd(pwd) { GM_setValue("lanzouFunctionPwd", pwd); }, setFormhash(formhash) { GM_setValue("lanzouFunctionFormhash", formhash); }, setUploadFiles(fileInfo) { GM_setValue("lanzouFunctionUploadFiles", fileInfo); }, delUser() { GM_deleteValue("lanzouFunctionUser"); }, delPwd() { GM_deleteValue("lanzouFunctionPwd"); }, delFormhash() { GM_deleteValue("lanzouFunctionFormhash"); }, delUploadFiles(f_id) { let _data_ = lanzou.storage.getUploadFiles(); Array.from(_data_).forEach((item, index) => { if (item["f_id"] == f_id) { _data_.splice(index, 1); lanzou.storage.setUploadFiles(_data_); return } }) }, }, login_getFormHash(user, pwd) { /* 获取账号的formhash */ return new Promise(res => { GM_xmlhttpRequest({ url: "https://up.woozooo.com/mlogin.php", method: "get", data: `task=3&uid=${encodeURI(user)}&pwd=${pwd}&setSessionId=&setSig=&setScene=&setToken=`, /* headers不设置,使用手机headers */ onload: (r) => { let formhash = r.responseText.match(/formhash':'(.+?)'/); if (formhash && formhash.length == 2) { xtips.toast("获取formhash成功"); res(formhash[1]); } else if (!r.responseText.match("登录(不可用)")) { res(4); } else { console.log(r); xtips.toast("获取formhash失败"); res(null); } }, onerror: () => { xtips.toast("网络异常,获取formhash失败"); res(null); } }) }) }, login(user, pwd, formhash) { /* 登录(不可用) */ return new Promise(res => { GM_xmlhttpRequest({ url: "https://up.woozooo.com/mlogin.php", method: "post", headers: { 'content-type': 'application/x-www-form-urlencoded', }, data: `task=3&uid=${encodeURI(user)}&pwd=${pwd}&setSessionId=&setSig=&setScene=&setToken=&formhash=${formhash}`, responseType: 'json', onload: (r) => { if ((r.finalUrl.indexOf("woozooo.com/mlogin.php") != -1 && JSON.parse(r.responseText)["zt"] == 1) || r.finalUrl.indexOf("woozooo.com/myfile.php") != -1) { res(true); } else { if (r.responseHeaders.indexOf("content-type: text/json" != -1)) { xtips.toast(JSON.parse(r.responseText)["info"]); } else { xtips.toast("登录(不可用)失败"); console.log(r); } res(false); } }, onerror: () => { xtips.toast("网络异常,登录(不可用)失败"); res(false); } }) }) }, uploadFile(file) { /* 上传文件 */ let formData = new FormData(); formData.append("task", 1); formData.append("ve", 2); formData.append("id", "WU_FILE_0"); formData.append("folder_id_bb_n", -1); formData.append("upload_file", file); return new Promise(res => { GM_xmlhttpRequest({ url: "https://up.woozooo.com/fileup.php", method: "post", data: formData, headers: { "Accept": "*/*", }, onload: (r) => { let json_data = JSON.parse(r.responseText); if (json_data["zt"] == 1) { xtips.toast(json_data["info"]); res(json_data["text"][0]); } else { xtips.toast(json_data["info"]); console.log(r); res(null); } }, onerror: () => { xtips.toast("网络异常,删除失败"); res(null); } }) }) }, deleteFile(file_id) { /* 删除文件 */ return new Promise(res => { GM_xmlhttpRequest({ url: `https://up.woozooo.com/doupload.php`, method: "post", data: `task=6&file_id=${file_id}`, headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", }, onload: (r) => { try { let data = JSON.parse(r.responseText); xtips.toast(data["info"]); res(true); } catch (error) { xtips.toast("删除失败"); console.log(r); res(false); } }, onerror: () => { xtips.toast("网络异常,删除失败"); res(false); } }) }) }, outLogin(user) { /* 退出登录(不可用) */ return new Promise(res => { GM_xmlhttpRequest({ url: `https://up.woozooo.com/account.php?action=logout&${encodeURI(user)}`, method: "get", onload: (r) => { res(r.responseText.match("成功") ? true : false) }, onerror: () => { xtips.toast("网络异常,退出失败"); res(false); } }) }) } } async function showUploadFiles() { /* 历史上传的文件们 */ lanZouViewShowLock = false; if (typeof $jq.NZ_MsgBox == "undefined") { popup2.toast({ "text": "加载NZMsgBox.js中" }); await GM_asyncLoadScriptNode("https://gf.qytechs.cn/scripts/449562-nzmsgbox/code/NZMsgBox.js"); if (typeof $jq.NZ_MsgBox == "undefined") { popup2.toast({ "text": "网络异常,加载NZMsgBox.js失败" }); return; } else { console.log("成功加载NZMsgBox.js"); } } let data = lanzou.storage.getUploadFiles(); data.reverse(); let content = ""; $jq.NZ_MsgBox.alert({ title: "蓝奏云已上传的文件", content: "获取中", type: "", location: "center", buttons: { confirm: { text: "确定" } } }); $jq.each(data, (index, value) => { let fileContent = ` <div style="display: flex;margin: 15px 5px;"> <a href="${value["is_newd"]}/${value["f_id"]}" target="_blank" style="color: #1e90ff;width: 80%;word-wrap: break-word;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;height: 30px;">${value["name_all"]}</a> <div style="margin-left: 10px;" class="dellanzoufile" t-id="${value["id"]}" t-f-id="${value["f_id"]}"> <i class="comiis_font" style="font-size: 24px;padding-left: 6px;"></i> </div> </div>`; content = content + fileContent; }) $jq(".msgcon").html(""); $jq(".msgcon").append(content); $jq(".msgcon").css("height", "400px"); GM_addStyle(` #mask, #ntcmsg_popmenu{ z-index: 100000 !important; } `) let plugin_delete_lanzou_file = (t_id, t_f_id, index) => { lanzou.deleteFile(t_id); console.log("删除文件", t_f_id); lanzou.storage.delUploadFiles(t_f_id); $jq(".msgcontainer .msgcon div").eq(index).remove(); xtips.toast("删除成功"); } $jq(".dellanzoufile i.comiis_font").on("click", function (e) { var t_id = e.target.parentElement.getAttribute("t-id"); var t_f_id = e.target.parentElement.getAttribute("t-f-id"); var index = $jq(this).parent().parent().index(); popup2.confirm({ text: "<p>确定删除该文件?</p>", callback: () => { plugin_delete_lanzou_file(t_id, t_f_id, index); popup2.confirm_close(); }, mask: true, only: true }) }); } async function showLoginView() { lanZouViewShowLock = false; xtip.open({ type: 'html', content: `<div class="loginbox"> <strong>蓝奏云</strong><br><br> <div><input type="text" class="xinput xful" placeholder="账号" /></div> <div><input type="password" class="xinput xful" placeholder="密码" /></div> <div><button class="xbutton xful xblue">登录(不可用)</button></div> </div> </div>`, app: true, success: async (x) => { let localDataUser = lanzou.storage.getUser(); let localDataPwd = lanzou.storage.getPwd(); if (localDataUser != "" && localDataPwd != "") { x.xtipdiv.querySelector(".xinput.xful[type='text']").value = localDataUser; x.xtipdiv.querySelector(".xinput.xful[type='password']").value = localDataPwd; } x.xtipdiv.querySelector(".xbutton.xful.xblue").onclick = async () => { let inputUser = x.xtipdiv.querySelector(".xinput.xful[type='text']").value.trim(); let inputPwd = x.xtipdiv.querySelector(".xinput.xful[type='password']").value.trim(); if (inputUser != "" && inputPwd != "") { xtips.toast("登录(不可用)中请稍后..."); let _formhash_ = await lanzou.login_getFormHash(inputUser, inputPwd); console.log(_formhash_); if (_formhash_ == 4) { console.log("已登录(不可用)"); lanzou.storage.setUser(inputUser); lanzou.storage.setPwd(inputPwd); if (lanzou.storage.getFormhash() == null) { console.log("未知原因,已登录(不可用)但本地未保存formhash,建立临时值"); lanzou.storage.setFormhash(_formhash_); } xtip.close(x.mainid); showView(); return; }; if (_formhash_ == null) { return; }; let loginStatus = await lanzou.login(inputUser, inputPwd, _formhash_); if (loginStatus) { console.log("登录(不可用)成功"); console.log(inputUser, inputPwd, _formhash_); lanzou.storage.setUser(inputUser); lanzou.storage.setPwd(inputPwd); lanzou.storage.setFormhash(_formhash_); xtip.close(x.mainid); showView(); } } else { xtips.toast('账号或密码不能为空'); } } } }); } async function showLanZouView(user, pwd) { lanZouViewShowLock = false; let sheet = null; let _formhash_ = lanzou.storage.getFormhash(); let loginStatus = await lanzou.login(user, pwd, _formhash_); if (!loginStatus) { xtips.toast("登录(不可用)过期"); lanzou.storage.delFormhash(); showLoginView(); return; } sheet = xtip.sheet({ btn: [`欢迎! ${user}`, '上传<input type="file" name="Filedata" accept="doc,docx,zip,rar,apk,ipa,txt,exe,7z,e,z,ct,ke,cetrainer,db,tar,pdf,w3x,epub,mobi,azw,azw3,osk,osz,xpa,cpk,lua,jar,dmg,ppt,pptx,xls,xlsx,mp3,ipa,iso,img,gho,ttf,ttc,txf,dwg,bat,imazingapp,dll,crx,xapk,conf,deb,rp,rpm,rplib,mobileconfig,appimage,lolgezi,flac,cad,hwt,accdb,ce,xmind,enc,bds,bdi,ssf,it,pkg,cfg" id="lanzouuploadfilebtn" style="display:none;">', '查看历史上传'] }); $jq("#lanzouuploadfilebtn").off("change").change(async (e) => { let lanzouChooseFile = e.currentTarget.files[0]; console.log(lanzouChooseFile); let uploadFileInfo = await lanzou.uploadFile(lanzouChooseFile); if (uploadFileInfo) { let tempData = lanzou.storage.getUploadFiles(); tempData = tempData.concat(uploadFileInfo); GM_setClipboard(`${uploadFileInfo["is_newd"]}/${uploadFileInfo["f_id"]}`); xtips.toast("已复制到剪贴板"); console.log(tempData); lanzou.storage.setUploadFiles(tempData); } }) let anyTouchNode = new AnyTouch(document.getElementById(sheet)); anyTouchNode.on("tap", (e) => { if (document.getElementById(sheet).querySelector(".xtiper_bg").outerHTML.indexOf(e.target.outerHTML) != -1) { /* 点击背景不关闭小窗 */ return; } if (document.querySelectorAll(".xtiper_sheet_ul.xtiper_sheet_center .xtiper_sheet_li")[0].outerHTML.indexOf(e.target.outerHTML) != -1) { /* 用户 */ xtip.confirm('确定退出登录(不可用)吗?', { btn1: async function () { let logoutStatus = await lanzou.outLogin(lanzou.storage.getUser()); if (logoutStatus) { xtips.toast("退出登录(不可用)成功"); lanzou.storage.delFormhash(); anyTouchNode.off("tap"); xtip.close(sheet); lanZouViewShowLock = false; } else { xtips.toast("退出登录(不可用)失败"); } } }); return; } if (document.querySelectorAll(".xtiper_sheet_ul.xtiper_sheet_center .xtiper_sheet_li")[1].outerHTML.indexOf(e.target.outerHTML) != -1) { /* 上传 */ $jq("#lanzouuploadfilebtn").val(""); $jq("#lanzouuploadfilebtn").click(); return; } if (document.querySelectorAll(".xtiper_sheet_ul.xtiper_sheet_center .xtiper_sheet_li")[2].outerHTML.indexOf(e.target.outerHTML) != -1) { /* 查看历史上传 */ anyTouchNode.off("tap"); xtip.close(sheet); showUploadFiles(); return; } if (document.querySelectorAll(".xtiper_sheet_ul.xtiper_sheet_center .xtiper_sheet_li")[3].outerHTML.indexOf(e.target.outerHTML) != -1) { /* 取消 */ anyTouchNode.off("tap"); xtip.close(sheet); lanZouViewShowLock = false; return; } }) } async function showView() { let user = lanzou.storage.getUser(); let pwd = lanzou.storage.getPwd(); let formhash = lanzou.storage.getFormhash(); if (user == "" || pwd == "" || formhash == null) { showLoginView(); } else { showLanZouView(user, pwd); } } function insertBtn() { let comiis_left_Touch = document.createElement("li"); comiis_left_Touch.className = "comiis_left_Touch"; let ANode = document.createElement("a"); ANode.setAttribute("href", "javascript:;"); ANode.className = "blacklist"; ANode.innerHTML = ` <div class="styli_tit f_c"> <img src="data:image/jpeg;base64,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"> </div> <div class="flex">蓝奏云</div>`; ANode.onclick = () => { if (!lanZouViewShowLock) { showView(); lanZouViewShowLock = true; } else { console.log("重复点击"); } } comiis_left_Touch.append(ANode); $jq(".comiis_sidenv_box .sidenv_li .comiis_left_Touch.bdew").append(comiis_left_Touch); } insertBtn(); }, async loadCheckboxTipResource() { /* 加载checkbox值变化的显示的提示的资源 */ await GM_asyncLoadScriptContent("https://whitesev.gitee.io/static_resource/ios_loading/js/iosOverlay.js"); await GM_asyncLoadStyleSheet("https://whitesev.gitee.io/static_resource/ios_loading/css/iosOverlay.css"); }, loadNextComments() { /* 加载下一页的评论 */ function autoLoadNextPageComments(post_comments_list) { /* 自动加载下一页的评论 */ $jq("#loading-comment-tip")[0].parentElement.style.display = ""; let next_page_url = post_comments_list.children[2].href; let isloding_flag = false; console.log("预设,获取下一页url:", next_page_url); if (next_page_url.indexOf("javascript:;") != -1) { console.log(post_comments_list); console.log("无多页评论"); $jq("#loading-comment-tip")[0].parentElement.style.display = "none"; return; } function _loadNextComments_() { if (isloding_flag == false) { isloding_flag = true; $jq("#loading-comment-tip").text("正在加载评论中..."); $jq("#loading-comment-tip")[0].parentElement.style.display = ""; let _url_ = next_page_url; $jq.get(_url_, function (data, status, xhr) { console.log("正在请求的下一页url", _url_); let postlist = $jq(data); let kqideSourceNode = $jq(".comiis_postlist.kqide"); let postDOM = postlist.find(".comiis_postlist.kqide").html(); let get_next_page_url = postlist.find(".nxt"); if (get_next_page_url.length != 0) { console.log("成功获取到下一页-评论"); next_page_url = get_next_page_url.attr("href"); let newURL = new URL(_url_); let setLocationUrl = `${newURL.pathname}${newURL.search}`; console.log("设置当前的url为请求的下一页url", window.location.origin + setLocationUrl); window.history.pushState('forward', null, setLocationUrl); $jq("#loading-comment-tip")[0].parentElement.style.display = "none"; } else { console.log("评论全部加载完毕,关闭监听事件"); let newURL = new URL(next_page_url); let setLocationUrl = `${newURL.pathname}${newURL.search}`; console.log("设置当前的url为请求的最后一页url", setLocationUrl); window.history.pushState('forward', null, setLocationUrl); $jq(".comiis_page.bg_f").remove(); $jq("#loading-comment-tip").text("已加载完所有评论"); $jq("#loading-comment-tip")[0].parentElement.style.display = ""; $jq("#loading-comment-tip").off("click", _loadNextComments_); $jq(window).off("scroll", scroll_loadNextComments); } isloding_flag = false; kqideSourceNode.append(postDOM); mobile.needRepeatLoadingJSResource(); }) } else { console.log("正在加载中请稍后"); } } function scroll_loadNextComments() { if (Math.ceil($jq(window).scrollTop() + $jq(window).height() + 150) >= $jq(document).height()) { /* load data */ _loadNextComments_(); } } $jq(window).on("scroll", scroll_loadNextComments); $jq("#loading-comment-tip").text("请上下滑动或点击加载"); $jq("#loading-comment-tip").on("click", _loadNextComments_); } if (GM_getValue("v21") && window.location.href.match(mt_config.rexp.forum_post) && document.title.indexOf("提示信息 - MT论坛") == -1) { let tip_html = ` <div class="comiis_multi_box bg_f b_t"> <label class="comiis_loadbtn bg_e f_d" id="loading-comment-tip"> 正在等待页面加载完毕 </label> </div>`; $jq(".comiis_bodybox").append($jq(tip_html)); let commentsEle = document.querySelector(".comiis_pltit span.f_d") || document.querySelector("#comiis_foot_memu .comiis_kmvnum"); if (document.querySelector(".comiis_pltit h2") && document.querySelector(".comiis_pltit h2").textContent.indexOf("暂无评论") != -1) { console.log("暂无评论"); $jq("#loading-comment-tip")[0].parentElement.style.display = "none"; return; } let commentsNum = parseInt(commentsEle.textContent); if (commentsNum >= 10) { let setAutoLoadInterval = setInterval(function () { let post_comments_list = document.querySelector(".comiis_page.bg_f"); /* 评论列表 */ if (post_comments_list) { autoLoadNextPageComments(post_comments_list); clearInterval(setAutoLoadInterval); } else { console.log("正在等待下一页列表元素出现"); } }, 500) } else { console.log("无多页评论"); $jq("#loading-comment-tip")[0].parentElement.style.display = "none"; } } }, loadPrevComments() { /* 加载上一页的评论 */ function autoLoadPrevPageComments() { /* 自动加载上一页的评论 */ let post_comments_list = document.querySelector(".comiis_page.bg_f"); let prev_page_url = post_comments_list.children[0].href; let isloding_flag = false; console.log("预设,获取上一页url:", prev_page_url); $jq("#loading-comment-tip-prev").text("请上下滑动或点击加载"); $jq("#loading-comment-tip-prev").on("click", _loadPrevComments_); function _loadPrevComments_() { if (isloding_flag) { console.log("正在加载上一页中请稍后"); } else { isloding_flag = true; $jq("#loading-comment-tip-prev").text("正在加载评论中..."); $jq("#loading-comment-tip-prev")[0].parentElement.style.display = ""; let _url_ = prev_page_url; $jq.get(_url_, function (data, status, xhr) { console.log("正在请求的上一页评论:", prev_page_url); let postlist = $jq(data); let kqideSourceNode = $jq(".comiis_postlist.kqide"); let postDOM = postlist.find(".comiis_postlist.kqide").html(); let get_pregv_page_url = postlist.find(".prev"); if (get_pregv_page_url.length != 0) { console.log("成功获取到上一页-评论"); prev_page_url = get_pregv_page_url.attr("href"); let newURL = new URL(_url_); let setLocationUrl = `${newURL.pathname}${newURL.search}`; console.log("设置当前的url为请求的上一页url", window.location.origin + setLocationUrl); window.history.pushState('forward', null, setLocationUrl); $jq("#loading-comment-tip-prev")[0].parentElement.style.display = "none"; isloding_flag = false; kqideSourceNode.prepend(postDOM); mobile.needRepeatLoadingJSResource(); } else { isloding_flag = false; kqideSourceNode.prepend(postDOM); let newURL = new URL(prev_page_url); let setLocationUrl = `${newURL.pathname}${newURL.search}`; console.log("已到顶页,设置当前的url第一页url", window.location.origin + setLocationUrl); window.history.pushState('forward', null, setLocationUrl); console.log("上一页评论全部加载完毕,关闭监听事件"); let page_title = postlist.find(".comiis_viewtit")[0].outerHTML; console.log($jq(page_title)); kqideSourceNode.prepend($jq(page_title)[0]); mobile.needRepeatLoadingJSResource(); /* $jq(".comiis_page.bg_f").remove(); */ $jq("#loading-comment-tip-prev").remove(); $jq("#loading-comment-tip-prev").off("click", _loadPrevComments_); $jq(window).off("scroll", ); } }) } /* $jq(window).unbind("scroll",_loadPrevComments_); */ } function scroll_loadPrevComments() { if ($jq(window).scrollTop() <= 50) { _loadPrevComments_(); } } $jq(window).on("scroll", scroll_loadPrevComments); } if (GM_getValue("v32") && window.location.href.match(mt_config.rexp.forum_post) && document.title.indexOf("提示信息 - MT论坛") == -1) { if (!document.querySelector(".comiis_pltit span.f_d")) { console.log("当前不在第一页,加载上一页评论"); let tip_html = ` <div class="comiis_multi_box bg_f b_t"> <label class="comiis_loadbtn bg_e f_d" id="loading-comment-tip-prev"> 正在等待页面加载完毕 </label> </div>`; $jq(".comiis_bodybox script")[0].after($jq(tip_html)[0]); if (document.querySelector(".comiis_pltit h2") && document.querySelector(".comiis_pltit h2").textContent.indexOf("暂无评论") != -1) { console.log("暂无上一页评论"); $jq("#loading-comment-tip-prev")[0].parentElement.style.display = "none"; return; } autoLoadPrevPageComments(); } } }, main() { /* 手机版按顺序加载的函数 */ tryCatch(mobile.commentsAddReviews); tryCatch(mobile.recoveryIMGWidth); tryCatch(mobile.identifyLinks); tryCatch(mobile.showUserUID); tryCatch(mobile.previewPictures); tryCatch(mobile.removeForumPostFontStyle); tryCatch(mobile.removeForumPostCommentFontStyle); tryCatch(mobile.autoSignIn); tryCatch(mobile.autoExpendFullTextByForumPost); tryCatch(mobile.searchHistory); tryCatch(mobile.loadNextComments, '', '$jq("#loading-comment-tip").text("加载评论失败")'); tryCatch(mobile.loadPrevComments, '', '$jq("#loading-comment-tip-prev").text("加载评论失败")'); tryCatch(mobile.repairClearSearchInput); tryCatch(mobile.repairUnableToEnterOtherSpaceCorrectly); tryCatch(mobile.chatChartBed); tryCatch(mobile.pageSmallWindowBrowsingForumPost); tryCatch(mobile.codeQuoteCopyBtn); tryCatch(mobile.editorOptimization); tryCatch(mobile.editorOptimizationFull); tryCatch(mobile.shieldUser); tryCatch(mobile.shieldPlate); tryCatch(mobile.userCheckBoxSettings); /* 选项主要界面内容 */ tryCatch(mobile.blackHome.insertMobileBlackHomeButton); tryCatch(mobile.lanzouFunction); tryCatch(mobile.paymentSubjectReminder); tryCatch(mobile.blacklistShieldUsersOrBlocks); tryCatch(mobile.showTodayStar); tryCatch(mobile.showSignInRanking); tryCatch(mobile.pageAfterDOMChangeRunFunction); unsafeWindow.popup2 = popup2; popup2.init(); }, needRepeatLoadingJSResource() { /* 帖子内需要重复执行的js */ tryCatch(mobile.shieldUser); tryCatch(mobile.commentsAddReviews); tryCatch(mobile.identifyLinks); tryCatch(mobile.showUserUID); tryCatch(mobile.previewPictures); tryCatch(mobile.modifyForumPostFontColor); tryCatch(mobile.pageSmallWindowBrowsingForumPost); tryCatch(mobile.codeQuoteCopyBtn); tryCatch(mobile.editorOptimizationOffDefaultBottomReplyBtnClickEvent); popup.init(); }, pageAfterDOMChangeRunFunction() { /* 当本页面动态加载帖子需要重复加载的东西 */ if (window.location.href.match(/bbs.binmt.cc\/forum/) || window.location.href.match(/bbs.binmt.cc\/home.php\?mod=space&do=thread&view=me/) || window.location.href.match(/home.php\?mod=space&uid=.+&do=thread&view=me/)) { function beforeHookRun() { tryCatch(mobile.showUserUID); tryCatch(mobile.previewPictures); tryCatch(mobile.shieldUser); tryCatch(mobile.shieldPlate); tryCatch(mobile.pageSmallWindowBrowsingForumPost); tryCatch(mobile.codeQuoteCopyBtn); } document.body.addEventListener("DOMNodeInserted", (event) => { let ele = event.target; if (ele.className != null && ele.className.indexOf("comiis_forumlist") != -1) { beforeHookRun(); } }) } }, pageSmallWindowBrowsingForumPost() { /* 页面小窗浏览帖子 */ if (!GM_getValue("v45") && ( !(window.location.href.match(mt_config.rexp.forum_guide_url) || !(window.location.href.match(mt_config.rexp.search_url)) ))) { return }; /* if (window != top.window) { console.log("当前在非top里,已禁用初始化小窗"); return; } */ GM_addStyle(` .xtiper_sheet, .xtiper_sheet .xtiper_sheet_tit{ border-radius: 18px 18px 0px 0px; } /* title自定义美化 */ .xtiper_sheet_tit.xtiper_sheet_left{ display: block; background: #fff; width: 100%; box-sizing: border-box; } .xtiper_sheet_tit.xtiper_sheet_left img.xtiper_tit_ico{ background: #fff; filter: invert(100%); width: 24px; height: 24px; align-self: center; } .xtiper_sheet_tit.xtiper_sheet_left .xtiper_tit_content{ margin-left: 22px; width: 215px; } .xtiper_sheet_tit.xtiper_sheet_left .xtiper_tit_content p{ word-wrap: break-word; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .xtiper_sheet_tit.xtiper_sheet_left .xtiper_tit_content .xtiper_tit_svg_lock{ display: flex; align-items: center; } .xtiper_sheet_tit.xtiper_sheet_left .xtiper_tit_content .xtiper_tit_svg_lock svg{ margin: 0px 6px 0px 2px; } .xtiper_sheet_tit.xtiper_sheet_left .xtiper_tit_right { display: inline-flex; align-items: center; align-content: center; width: 115px; justify-content: center; } .xtiper_sheet_tit.xtiper_sheet_left .xtiper_tit_right_windowopen, .xtiper_sheet_tit.xtiper_sheet_left .xtiper_tit_right_windowclose{ width: 100%; text-align: center; margin: 0px 0px; height: 100%; display: flex; justify-content: center; align-items: center; } /* 底部高度不对等问题*/ .xtiper_content.xtit{ height: calc(100% - 80px); } /* 底部消息距离底部30px*/ .xtiper.xtiper_msg.xtiper_msg_bottom.xtiper_msg_black.xon{ margin-bottom: 30px; } /* 标题顶部拖拽*/ .xtiper_sheet_tit_top_drag{ width: 100%; position: relative; height: 10px; } .xtiper_sheet_tit_top_drag div{ width: 50px; margin: 0 auto; height: 4px; background: #d9d9d9; border-radius: 15px; bottom: 3px; position: relative; } `); function getFormList() { /* 获取当前页面所有帖子 */ let formList = mt_config.dom_obj.comiis_formlist() ? mt_config.dom_obj.comiis_formlist() : []; formList = formList.length == 0 ? mt_config.dom_obj.comiis_postli() : formList; formList = formList.length == 0 ? mt_config.dom_obj.comiis_mmlist() : formList; return formList; } let formlist = null; /* 帖子列表 */ let isFindFormList = false; /* 是否找到帖子 */ let findFormListNums = 0; /* 找到帖子的数量 */ let smallWindowId = null; /* 小窗对象 */ let waitFormListAppear = setInterval(function () { /* 等待页面加载出现帖子 */ if (isFindFormList) { formlist = getFormList(); main(); clearInterval(waitFormListAppear); } else { if (findFormListNums >= 10) { console.log("未出现帖子或寻找贴子超时,清理定时器"); clearInterval(waitFormListAppear); } isFindFormList = getFormList().length ? true : false; findFormListNums += 1; } }, 800); function popstateFunction() { window.history.pushState('forward', null, '#'); window.history.forward(1); resumeBack(); } function banBack() { /* 禁止浏览器后退按钮 */ if (window.history && window.history.pushState) { $jq(window).on('popstate', popstateFunction); } window.history.pushState('forward', null, '#'); /* 在IE中必须得有这两行 */ window.history.forward(1); }; async function resumeBack() { /* 允许浏览器后退并关闭小窗 */ xtip.close(smallWindowId); smallWindowId = null; $jq(window).off('popstate', popstateFunction); while (1) { if (window.location.href == 'https://bbs.binmt.cc/#') { console.log("back!"); await utils.asyncSetTimeOut("window.history.back();", 100); await utils.sleep(100); } else { return; } } }; function getSmallPageBtn(forumPostTitle, forumPostUrl, isNew) { let prevNode = document.createElement("li"); let constructURL = new URL(forumPostUrl); let isHTTPS = constructURL.protocol.indexOf("https:") != -1 ? true : false; let safeIcon = `<svg t="1660458686317" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2383" width="12" height="12" style="margin: 0px 6px 0px 2px;"> <path d="M842.666667 384h-74.666667V277.333333a234.666667 234.666667 0 1 0-469.333333 0v106.666667H224a53.393333 53.393333 0 0 0-53.333333 53.333333v490.666667a53.393333 53.393333 0 0 0 53.333333 53.333333h618.666667a53.393333 53.393333 0 0 0 53.333333-53.333333V437.333333a53.393333 53.393333 0 0 0-53.333333-53.333333zM341.333333 277.333333c0-105.866667 86.133333-192 192-192s192 86.133333 192 192v106.666667H341.333333z" fill="#000000" p-id="2384"></path> </svg>`; let unsafeIcon = `<svg t="1663899632280" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3360" width="12" height="12"> <path d="M770.423989 451.309956H368.89432V284.246158c0-80.739434 65.689748-146.429182 146.429182-146.429182S661.738235 203.506724 661.738235 284.246158a43.350032 43.350032 0 0 0 86.700063 0c0-128.547294-104.581952-233.129246-233.122021-233.129246-128.547294 0-233.129246 104.581952-233.129245 233.129246v167.063798h-21.978466a43.350032 43.350032 0 0 0-43.350032 43.350031v437.965371a43.350032 43.350032 0 0 0 43.350032 43.350032h510.215423a43.350032 43.350032 0 0 0 43.350032-43.350032V494.659987a43.350032 43.350032 0 0 0-43.350032-43.350031z" fill="#2c2c2c" p-id="3361"></path> </svg>`; let blankOpenIcon = `<svg t="1660459294973" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3580" width="20" height="20"> <path d="M5.064339 94.782119l0-74.338917 494.595401 0c17.302383 0 31.352438 16.614748 31.352438 37.206628 0 20.517541-14.050055 37.132289-31.352438 37.132289L5.064339 94.782119" p-id="3581" fill="#2c2c2c"></path> <path d="M1008.639721 1024l-74.338917 0L934.300804 529.404599c0-17.302383 16.614748-31.352438 37.206628-31.352438 20.517541 0 37.132289 14.050055 37.132289 31.352438L1008.639721 1024" p-id="3582" fill="#2c2c2c"></path> <path d="M1008.639721 20.443202 945.972014 20.443202 1008.639721 20.443202Z" p-id="3583" fill="#2c2c2c"></path> <path d="M1008.639721 83.129494 1008.639721 20.443202 1008.639721 83.129494Z" p-id="3584" fill="#2c2c2c"></path> <path d="M5.064339 83.129494 5.064339 20.443202 67.750631 20.443202 5.064339 20.443202 5.064339 83.129494Z" p-id="3585" fill="#2c2c2c"></path> <path d="M5.064339 1024 5.064339 961.332293 5.064339 1024Z" p-id="3586" fill="#2c2c2c"></path> <path d="M67.750631 1024 5.064339 1024 67.750631 1024Z" p-id="3587" fill="#2c2c2c"></path> <path d="M1008.639721 1024 945.972014 1024 1008.639721 1024Z" p-id="3588" fill="#2c2c2c"></path> <path d="M1008.639721 1024 1008.639721 961.332293 1008.639721 1024Z" p-id="3589" fill="#2c2c2c"></path> <path d="M934.300804 20.443202l74.338917 0 0 263.438538c0 17.302383-16.614748 31.371023-37.132289 31.371023-20.610465 0-37.206628-14.06864-37.206628-31.371023L934.300804 20.443202" p-id="3590" fill="#2c2c2c"></path> <path d="M726.393437 94.782119c-17.339552 0-31.371023-16.614748-31.371023-37.132289 0-20.573295 14.031471-37.206628 31.371023-37.206628l282.227699 0 0 74.338917L726.393437 94.782119" p-id="3591" fill="#2c2c2c"></path> <path d="M79.403256 1024 5.064339 1024 5.064339 20.443202 79.403256 20.443202 79.403256 1024Z" p-id="3592" fill="#2c2c2c"></path> <path d="M1008.639721 949.661083 1008.639721 1024 5.064339 1024 5.064339 949.661083 1008.639721 949.661083Z" p-id="3593" fill="#2c2c2c"></path> <path d="M947.941995 28.564729c12.210167-12.265921 33.935716-10.426033 48.431805 4.107225 14.551843 14.477504 16.391731 36.221637 4.107225 48.431805L288.425706 793.214831c-12.265921 12.321676-33.9543 10.481787-48.506143-4.12581-14.533258-14.458919-16.373147-36.221637-4.107225-48.394635L947.941995 28.564729" p-id="3594" fill="#2c2c2c"></path> </svg>`; let closeIcon = `<svg t="1660459530654" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5064" width="20" height="20"> <path d="M579.392 511.296l429.376 428.544a48.128 48.128 0 0 1-34.176 82.304c-12.8 0-25.088-5.12-34.112-14.208L511.168 579.392 81.792 1008a48.32 48.32 0 0 1-67.648-0.576 48.128 48.128 0 0 1-0.64-67.52L442.88 511.296 13.568 82.752A48.128 48.128 0 0 1 14.08 15.168 48.32 48.32 0 0 1 81.792 14.592l429.376 428.544L940.48 14.592a48.32 48.32 0 0 1 67.648 0.64c18.624 18.56 18.88 48.64 0.64 67.52L579.392 511.296z" fill="#2c2c2c" p-id="5065"></path> </svg>`; let showWebsiteSafeIcon = isHTTPS ? safeIcon : unsafeIcon; let websiteTitle = ` <div class="xtiper_sheet_tit_top_drag"><div></div></div> <div style="display:flex;"> <img src="https://cdn-bbs.mt2.cn/template/comiis_app/comiis/img/favicon.ico" class="xtiper_tit_ico"> <div class="xtiper_tit_content"> <p>${forumPostTitle}</p> <div class="xtiper_tit_svg_lock"> ${showWebsiteSafeIcon} <p>${constructURL.host}</p> </div> </div> <div class="xtiper_tit_right"> <div class="xtiper_tit_right_windowopen"> ${blankOpenIcon} </div> <div class="xtiper_tit_right_windowclose"> ${closeIcon} </div> </div> </div>`; prevNode.className = "f_c"; prevNode.setAttribute("style", "display: flex;justify-content: center;align-items: center;"); prevNode.innerHTML = `<svg t="1660462230529" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7937" width="18" height="18" style="margin-right: 4px;"> <path d="M885.333333 768h-618.666666C215.466667 768 170.666667 725.333333 170.666667 672v-448C170.666667 170.666667 213.333333 128 266.666667 128h616.533333C938.666667 128 981.333333 170.666667 981.333333 224v445.866667c0 55.466667-42.666667 98.133333-96 98.133333z m-618.666666-576c-17.066667 0-32 14.933333-32 32v445.866667c0 17.066667 14.933333 32 32 32h616.533333c17.066667 0 32-14.933333 32-32V224c2.133333-17.066667-12.8-32-29.866667-32h-618.666666z" p-id="7938" fill="#999999"></path> <path d="M757.333333 896h-618.666666C85.333333 896 42.666667 851.2 42.666667 800v-448c0-17.066667 14.933333-32 32-32s32 14.933333 32 32v445.866667c0 19.2 14.933333 34.133333 32 34.133333h616.533333c17.066667 0 32 14.933333 32 32s-12.8 32-29.866667 32z" p-id="7939" fill="#999999"></path> </svg> <a class="tosmallwindowprev"></a>`; prevNode.getElementsByClassName("tosmallwindowprev")[0].innerText = isNew ? "Win" : "浏览"; prevNode.onclick = () => { banBack(); let temp_id = xtip.open({ type: 'url', content: forumPostUrl, title: websiteTitle, height: '88%', app: true, success: (e) => {}, end: () => { console.log("点击其它区域关闭小窗"); resumeBack(); } }); if (typeof top.window.tampermonkeyByMT != "undefined") { console.log("当前执行为非油猴调用"); let iframe_id = temp_id + "_id"; document.getElementById(iframe_id).onload = () => { console.log(`子窗口: ${iframe_id}加载完毕`); let scriptNode = document.createElement("script"); scriptNode.innerHTML = top.window.tampermonkeyByMT; document.getElementById(iframe_id).contentWindow.document.head.append(scriptNode); } } smallWindowId = temp_id; console.log(smallWindowId); let dragNode = new AnyTouch(document.getElementById(temp_id)); let smallWidowNode = document.getElementById(temp_id).querySelector("div.xtiper_sheet"); let smallWidowNormalHeight = parseInt(smallWidowNode.style["height"]); /* 小窗原始高度 */ console.log("小窗原始高度", smallWidowNormalHeight); dragNode.on("pan", (e) => { if (e.phase == 'move' && e.displacementY > 0) { /* 当前为向下移动 */ smallWidowNode.style["transition"] = "none"; smallWidowNode.style["height"] = Math.abs(smallWidowNormalHeight - e.distanceY) + "px"; } if (e.isEnd) { /* 当前为停止移动,松开手指,判断在哪个区域,一半以上回归上面,一般以下,关闭 */ smallWidowNode.style["transition"] = "0.2s ease-in"; if (parseInt(smallWidowNode.style["height"]) > (window.innerHeight / 2)) { smallWidowNode.style["height"] = smallWidowNormalHeight + "px"; } else { resumeBack(); } } }) dragNode.on("tap", (e) => { if (document.getElementById(temp_id).querySelector(".xtiper_bg").outerHTML.indexOf(e.target.outerHTML) != -1) { /* 点击背景关闭小窗 */ console.log("点击背景关闭小窗"); resumeBack(); dragNode.off("tap"); dragNode.off("pan"); return; } if (document.getElementById(temp_id).querySelector(".xtiper_tit_content").outerHTML.indexOf(e.target.outerHTML) != -1) { GM_setClipboard(`『${forumPostTitle}』 - ${forumPostUrl}`); xtips.toast('已复制链接', { icon: 'success', pos: 'bottom' }); return; } if (document.getElementById(temp_id).querySelector(".xtiper_tit_right_windowopen svg").outerHTML.indexOf(e.target.outerHTML) != -1) { window.open(forumPostUrl, "_blank"); return; } if (document.getElementById(temp_id).querySelector(".xtiper_tit_right_windowclose svg").outerHTML.indexOf(e.target.outerHTML) != -1) { console.log("点击关闭按钮关闭小窗"); resumeBack(); dragNode.off("tap"); dragNode.off("pan"); return; } }) } return prevNode; } async function main() { $jq.each(formlist, function (index, value) { let isNewUI = false; let formBottomEle = value.querySelectorAll(".comiis_znalist_bottom.b_t.cl ul.cl li"); if (!formBottomEle.length) { let tempFormBottomEle = value.querySelectorAll(".comiis_xznalist_bottom.cl ul.cl li"); /* 新版论坛UI */ if (!tempFormBottomEle.length) { return }; formBottomEle = tempFormBottomEle; isNewUI = true; }; let clParentEle = formBottomEle[0].parentElement; if (clParentEle.querySelector(".tosmallwindowprev")) { console.log("已经插入过小窗浏览"); } else { let forumPostUrl = value.querySelector(".mmlist_li_box.cl a").getAttribute("href"); let forumPostTitle = value.querySelector(".mmlist_li_box.cl a").innerText; if (!forumPostUrl) { console.log("获取帖子url失败"); return; } if (!forumPostTitle) { console.log("获取帖子标题失败"); return; } let previewPicturesEle = getSmallPageBtn(forumPostTitle, forumPostUrl, isNewUI ? isNewUI : null); if (previewPicturesEle != null) { clParentEle.append(previewPicturesEle); clParentEle.setAttribute("style", "display: flex;height: inherit;"); } } }) } }, paymentSubjectReminder() { /* 付费主题白嫖提醒 */ let urlForumPostMatchStatus = window.location.href.match(mt_config.rexp.forum_post); let urlHomeSpaceMatchStatus = window.location.href.match(mt_config.rexp.home_space_url); let urlGuideMatchStatus = window.location.href.match(mt_config.rexp.forum_guide_url); let urlCommunityMatchStatus = window.location.href.match(mt_config.rexp.community_url) || window.location.href.match(mt_config.rexp.plate_url); let urlBBSMatchStatus = window.location.href.match(mt_config.rexp.bbs); let storageMatchStatus = GM_getValue("v44") != null; let setTipForumPostList = GM_getValue("tipToFreeSubjectForumPost") == null ? [] : GM_getValue("tipToFreeSubjectForumPost"); const paymentSubjectReminderHome = { getData() { /* 获取数据 */ return GM_getValue("tipToFreeSubjectForumPost") == null ? [] : GM_getValue("tipToFreeSubjectForumPost"); }, setData(data) { /* 设置数据 */ GM_setValue("tipToFreeSubjectForumPost", data); }, async insertButtonView() { /* 插入-底部导航-我的-付费主题白嫖列表(按钮) */ let comiis_left_Touch = document.createElement("li"); comiis_left_Touch.className = "comiis_left_Touch"; let paymentSubjectReminderHomeBtn = document.createElement("a"); paymentSubjectReminderHomeBtn.setAttribute("href", "javascript:;"); paymentSubjectReminderHomeBtn.className = "paymentsubjectreminder"; paymentSubjectReminderHomeBtn.innerHTML = ` <div class="styli_tit f_c"> <i class="comiis_font" style="color:#ec0000;"></i> </div> <div class="flex">付费主题白嫖列表</div>`; GM_addStyle(` .NZ-MsgBox-alert .msgcontainer .msgtitle { text-align: center !important; } #autolist .k_misign_lu img { width: 40px; height: 40px; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px; } .k_misign_lc .f_c{ margin: 5px 0px; } details.subjectnotvisit, details.subjectcanvisit{ margin-left: 20px; } `) paymentSubjectReminderHomeBtn.onclick = () => { paymentSubjectReminderHome.showView(); } comiis_left_Touch.append(paymentSubjectReminderHomeBtn); $jq(".comiis_sidenv_box .sidenv_li .comiis_left_Touch.bdew").append(comiis_left_Touch); /* Array.from(document.querySelectorAll(".comiis_myinfo_list.bg_f.cl")).forEach((ele) => { if (ele.innerText.match(/消息提醒|资料设置|我的积分|我的勋章|我的道具/)) { ele.append(paymentSubjectReminderHomeBtn); return; } }) */ }, async showView() { /* 显示-付费主题白嫖列表(dialog) */ if (typeof $jq.NZ_MsgBox == "undefined") { popup2.toast("加载NZMsgBox.js中"); await GM_asyncLoadScriptNode("https://gf.qytechs.cn/scripts/449562-nzmsgbox/code/NZMsgBox.js"); if (typeof $jq.NZ_MsgBox == "undefined") { popup2.toast("网络异常,加载NZMsgBox.js失败"); return; } else { console.log("成功加载NZMsgBox.js"); } } let data = paymentSubjectReminderHome.getData(); $jq.NZ_MsgBox.alert({ title: "付费主题白嫖列表", content: "获取中", type: "", location: "center", buttons: { confirm: { text: "确定" } } }); let notVisitedTipContent = "" /* 可白嫖且未访问 */ let notVisitedNums = 0; /* 可白嫖且未访问的数量 */ let isFreeContent = ""; /* 可白嫖帖子-未读的加左上边红点 */ let isPaidContent = ""; /* 需付费帖子 */ let isFreeNotVisitedContentList = []; let isFreeContentList = []; let isPaidContentList = []; $jq.each(data, (i, v) => { let timeColor = "#f91212"; let leftRedBtn = ""; if (new Date().getTime() > v["expirationTimeStamp"]) { /* 可白嫖 */ timeColor = "#1e90ff"; if (v["isVisited"] == false) { leftRedBtn = '<span class="icon_msgs bg_del" style="position: fixed;width: 10px;height: 10px;border-radius: 50%;margin: 10px 0px 0px -15px;"></span>' notVisitedNums = notVisitedNums + 1; } } let concatList = { "content": ` <tbody id="autolist"> <tr> <td style="width: 100%;"> <div style="display: inline-flex;"> ${leftRedBtn} <div style="width: 240px;"> <a href="javascript:void(0);" t-href="${v["url"]}" t-index="${i}" style="color: #1e90ff;">${v["title"]}</a> <li style="margin: 5px 15px;color: ${timeColor};">${v["expirationTime"]}</li> </div> <div style="align-self: center;margin-left: 10px;" t-index="${i}" class="delsubjecttip"> <i class="comiis_font" style="font-size: 24px;padding-left: 6px;"></i> </div> </div> </td> </tr> <tr style="height:15px;"></tr> </tbody> `, "timestamp": v["expirationTimeStamp"] }; if (new Date().getTime() > v["expirationTimeStamp"]) { /* 可白嫖 */ if (leftRedBtn != '') { isFreeNotVisitedContentList = isFreeNotVisitedContentList.concat(concatList); } else { isFreeContentList = isFreeContentList.concat(concatList); } } else { isPaidContentList = isPaidContentList.concat(concatList); } }); isFreeNotVisitedContentList.sort(utils.sortListByProperty("timestamp", "asc")); isFreeContentList.sort(utils.sortListByProperty("timestamp", "asc")); isFreeContent = utils.listToStringByValue(isFreeNotVisitedContentList, "content") + utils.listToStringByValue(isFreeContentList, "content"); isPaidContent = utils.listToStringByValue(isPaidContentList, "content"); if (notVisitedNums > 0) { notVisitedTipContent = `<span class="icon_msgs bg_del f_f" style=" display: inline-block; position: absolute; width: 16px; height: 16px; line-height: 16px; border-radius: 50%; font-size: 14px; text-align: center; margin: 3px 0px 0px 10px; ">${notVisitedNums}</span>`; } let dialogIsFreeContent = '<details class="subjectcanvisit" open=""><summary>可白嫖' + notVisitedTipContent + '</summary><table id="paymentSubjectReminderIsFreeList" style="overflow: auto;height: inherit;margin: 15px 0px;">' + isFreeContent + "</table></details>"; let dialogIsPaidContent = '<details class="subjectnotvisit"><summary>需付费</summary><table id="paymentSubjectReminderIsPaidList" style="overflow: auto;height: inherit;margin: 15px 0px;">' + isPaidContent + "</table></details>"; $jq(".msgcon").html(""); $jq(".msgcon").append(dialogIsFreeContent); $jq(".msgcon").append(dialogIsPaidContent); $jq(".msgcon").css("height", "400px"); $jq(".delsubjecttip i.comiis_font").on("click", (e) => { var t_index = e.target.parentElement.getAttribute("t-index"); popup2.confirm({ "text": "<p>确定移出付费主题白嫖列表?</p>", "mask": true, "callback": () => { data.splice(t_index, 1); console.log(data); paymentSubjectReminderHome.setData(data); e.target.parentElement.parentElement.parentElement.parentElement.parentElement.remove(); popup2.confirm_close(); }, "only": true }); }); $jq("#paymentSubjectReminderIsFreeList").on("click", "a", (e) => { var t_index = e.target.getAttribute("t-index"); var t_href = e.target.getAttribute("t-href"); console.log(t_index, t_href); data[t_index]["isVisited"] = true; paymentSubjectReminderHome.setData(data); window.open(t_href, "_blank"); e.target.setAttribute("style", "color: #000000;"); if (e.target.parentElement.parentElement.children[0].className != "icon_msgs bg_del") { return; } e.target.parentElement.parentElement.children[0].remove(); $jq("#paymentSubjectReminderIsFreeList").append(e.target.parentElement.parentElement.parentElement.parentElement.parentElement); let notVisitedNums = $jq(".subjectcanvisit summary span.icon_msgs.bg_del.f_f").text(); notVisitedNums = parseInt(notVisitedNums) - 1; if (notVisitedNums > 0) { $jq(".subjectcanvisit summary span.icon_msgs.bg_del.f_f").html(notVisitedNums); } else { $jq(".subjectcanvisit summary span.icon_msgs.bg_del.f_f").remove(); } }) $jq("#paymentSubjectReminderIsPaidList").on("click", "a", (e) => { var t_index = e.target.getAttribute("t-index"); var t_href = e.target.getAttribute("t-href"); console.log(t_index, t_href); window.open(t_href, "_blank"); e.target.setAttribute("style", "color: #000000;"); }) } } if (storageMatchStatus && urlForumPostMatchStatus) { /* 帖子内部-添加进提醒的按钮或者已添加进提醒的按钮点击移出 */ let paySubjectTip = $jq("span.kmren"); /* 购买主题的元素 */ if (paySubjectTip.length != 0) { log.success("当前帖子存在需要购买主题"); let isAddTip = false; let tipBtnHTML = ''; Array.from(setTipForumPostList).forEach((item, index) => { if (window.location.href.match(item["url"])) { isAddTip = true; return; } }); if (isAddTip) { log.success("已设置提醒"); tipBtnHTML = $jq(`<a href="javascript:;" class="styli_tit f_c"><i class="comiis_font" style="color: #ffffff;"></i></a>`); tipBtnHTML.on("click", function () { popup2.confirm({ text: "<p>确定移出付费主题白嫖列表?</p>", callback: function () { let isRemove = false; Array.from(setTipForumPostList).forEach((item, index) => { if (window.location.href.match(item["url"])) { setTipForumPostList.splice(index, 1); GM_setValue("tipToFreeSubjectForumPost", setTipForumPostList); isRemove = true; utils.asyncSetTimeOut("window.location.reload()", 1500); return; } }); if (!isRemove) { popup2.toast("移出失败"); } else { popup2.confirm_close(); popup2.toast({ "text": "移出成功" }); } }, mask: true }); }); } else { log.success("未设置提醒"); tipBtnHTML = $jq(`<a href="javascript:;" class="styli_tit f_c"><i class="comiis_font" style="color: #FF9900;"></i></a>`); tipBtnHTML.on("click", () => { let expirationTimeMatch = $jq(".kmren").parent().text().replace(/\t|\n/g, "").match(/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}[\s]{1}[0-9]{1,2}:[0-9]{1,2}/); if (expirationTimeMatch.length == 0) { popup2.toast({ "text": "获取付费主题到期时间失败" }); return; } let expirationTime = expirationTimeMatch[0]; let expirationTimeStamp = utils.formatDateStrToStamp(expirationTime); setTipForumPostList = setTipForumPostList.concat({ "url": window.location.href, "title": document.title.replace(" - MT论坛", ""), "expirationTime": expirationTime, "expirationTimeStamp": expirationTimeStamp, "isVisited": false }); GM_setValue("tipToFreeSubjectForumPost", setTipForumPostList); popup2.toast({ "text": "添加成功" }); setTimeout(function () { window.location.reload(); }, 1500); }); } $jq(".comiis_head.f_top .header_y").append(tipBtnHTML); }; } if (storageMatchStatus && urlBBSMatchStatus) { /* 底部导航-我的-提供类似小黑屋这种可查看设置提醒的帖子 */ paymentSubjectReminderHome.insertButtonView(); } if (storageMatchStatus) { /* 设置提醒小红点 */ function getTipNums() { let needTipNums = 0; Array.from(paymentSubjectReminderHome.getData()).forEach((item, index) => { if (new Date().getTime() > item["expirationTimeStamp"] && item["isVisited"] == false) { needTipNums += 1; } }); return needTipNums; } if (urlHomeSpaceMatchStatus || urlGuideMatchStatus || urlCommunityMatchStatus) { /* 当前网页为,底部导航-我的 */ let redBtn = $jq(".icon_msgs.bg_del.f_f"); /* 底部导航-我的-右上角小红点 */ let tipNums = 0; if (redBtn.length) { tipNums = parseInt(redBtn.text()); $jq(".icon_msgs.bg_del.f_f").html(tipNums + getTipNums()); $jq(".comiis_head .header_z .kmuser em").append($jq(`<span class="icon_msgs bg_del"></span>`)); } else { let tipnums = getTipNums(); if (tipnums) { /* $jq("ul.comiis_flex li.flex a[title='我的'] i.comiis_font").append($jq(`<span class="icon_msgs bg_del f_f">${tipnums}</span>`)); */ $jq(".comiis_head .header_z .kmuser em").append($jq(`<span class="icon_msgs bg_del"></span>`)); } } } if (urlBBSMatchStatus) { /* 当前网页为,全部 */ let redBtn = $jq(".sidenv_num.bg_del.f_f"); /* 侧边栏-头像-右上角小红点 */ let tipNums = 0; if (redBtn.length) { tipNums = parseInt(redBtn.text()); $jq(".sidenv_num.bg_del.f_f").html(tipNums + getTipNums()); } else { let tipnums = getTipNums(); if (tipnums) { $jq(".sidenv_user em").before($jq(`<span class="sidenv_num bg_del f_f">${tipnums}</span>`)); } } if (getTipNums()) { /* 当前网页为,侧边slider,付费白嫖列表 */ /* $jq(".comiis_left_Touch .paymentsubjectreminder div.flex").append($jq(`<span class="sidenv_num bg_del f_f" style=" position: absolute; height: 6px; line-height: 6px; padding: 1px 4px; border-radius: 18px; z-index: 30; margin: 10px 4px 0px 0px; "></span>`)); */ $jq(".comiis_left_Touch .paymentsubjectreminder div.flex").append($jq(`<span class="sidenv_num bg_del f_f" style=" position: relative; border-radius: 18px; height: 6px; width: 6px; left: 3px; display: inline-flex; bottom: 8px; "></span>`)); } } } }, async previewPictures() { /* 贴外预览图片-使用github项目https://github.com/fengyuanchen/viewerjs */ if (!GM_getValue("v34") && (!(window.location.href.match(mt_config.rexp.forum_guide_url) || /* !(window.location.href.match(mt_config.rexp.forum_post)) || !(window.location.href.match(mt_config.rexp.plate_url)) || */ !(window.location.href.match(mt_config.rexp.search_url)) ))) { return } function getFormList() { let formList = mt_config.dom_obj.comiis_formlist() ? mt_config.dom_obj.comiis_formlist() : []; formList = formList.length == 0 ? mt_config.dom_obj.comiis_postli() : formList; formList = formList.length == 0 ? mt_config.dom_obj.comiis_mmlist() : formList; return formList; } let formlist = null; /* 帖子列表 */ let isFindFormList = false; let findFormListNums = 0; let waitFormListAppear = setInterval(function () { if (isFindFormList) { formlist = getFormList(); main(); clearInterval(waitFormListAppear) } else { if (findFormListNums >= 10) { console.log("未出现帖子或寻找贴子超时,清理定时器"); clearInterval(waitFormListAppear); } isFindFormList = getFormList().length ? true : false; findFormListNums += 1; } }, 800); function getPreviewBtn(node, isNew) { let prevNode = document.createElement("li"); prevNode.className = "f_c"; let imageDOM = node.querySelectorAll(".comiis_pyqlist_img").length ? node.querySelectorAll(".comiis_pyqlist_img") : node.querySelectorAll(".comiis_pyqlist_imgs"); if (imageDOM.length == 0) { return null; }; prevNode.setAttribute("style", "display: flex;justify-content: center;"); prevNode.innerHTML = `<i class="comiis_font"></i><a class="topreimg"></a>`; Array.from(imageDOM).forEach(item => { let needPrevImages = item.querySelectorAll("img"); let postForumImageNodeDiv = document.createElement("div"); let postForumImageNodeUl = document.createElement("ul"); postForumImageNodeUl.className = "postforumimages"; postForumImageNodeUl.setAttribute("style", "display:none;"); Array.from(needPrevImages).forEach(_img_ => { let tempLi = document.createElement("li"); let tempImg = document.createElement("img"); tempImg.setAttribute("data-src", _img_.getAttribute("src")); tempLi.append(tempImg); postForumImageNodeUl.append(tempLi); }); postForumImageNodeDiv.append(postForumImageNodeUl); prevNode.append(postForumImageNodeDiv); }) let canPrevImageNums = prevNode.getElementsByTagName("img").length; prevNode.getElementsByClassName("topreimg")[0].innerText = isNew ? canPrevImageNums : "预览"; prevNode.onclick = (e) => { let imageList = e.target.parentElement.children[2].children[0]; let viewer = new Viewer(imageList, { inline: false, url: "data-src", hidden: () => { viewer.destroy(); } }); viewer.zoomTo(1); viewer.show(); } return prevNode; } async function main() { $jq.each(formlist, function (index, value) { let isNewUI = false; let formBottomEle = value.querySelectorAll(".comiis_znalist_bottom.b_t.cl ul.cl li"); if (!formBottomEle.length) { let tempFormBottomEle = value.querySelectorAll(".comiis_xznalist_bottom.cl ul.cl li"); /* 新版论坛UI */ if (!tempFormBottomEle.length) { return }; formBottomEle = tempFormBottomEle; isNewUI = true; }; let clParentEle = formBottomEle[0].parentElement; if (clParentEle.querySelector(".topreimg")) { console.log("已经插入过预览图片"); } else { let previewPicturesEle = getPreviewBtn(value, isNewUI ? isNewUI : null); if (previewPicturesEle != null) { clParentEle.append(previewPicturesEle); clParentEle.setAttribute("style", "display: flex;"); } } }) } }, previewPostForum() { /* 发帖、回复、编辑预览功能 */ GM_addStyle(` #comiis_mh_sub{ height:40px; } .gm_plugin_previewpostforum svg{ } .gm_plugin_previewpostforum_html .comiis_message_table{ margin-top: 10px; font-weight: initial; line-height: 24px; } .gm_plugin_previewpostforum_html .comiis_message_table a{ height: auto; float: unset; color: #507daf !important; } .gm_plugin_previewpostforum_html .comiis_message_table i{ text-align: unset; font-size: unset; line-height: unset; padding-top: unset; display: unset; } .comiis_postli.comiis_list_readimgs.nfqsqi{ width: 100vw; } .gm_plugin_previewpostforum_html.double-preview{ width: 50vw; } .gm_plugin_previewpostforum_html.double-preview .comiis_over_box.comiis_input_style{ border-left: 1px solid; } `); let open_double = GM_getValue("preview_post_forum_by_double"); function addMenu_preview() { /* 添加底部菜单-预览 */ $jq("#comiis_mh_sub .swiper-wrapper.comiis_post_ico").append($jq(`<a href="javascript:;" class="swiper-slide gm_plugin_previewpostforum"><i class="comiis_font" style="display: flex;flex-direction: column;padding-top: 1px;"><svg t="1661243615511" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2399" width="22" height="22" fill="currentColor"><path d="M470.1 885.3H208.8V138.7h597.3v336c0 20.6 16.7 37.3 37.3 37.3 20.6 0 37.3-16.7 37.3-37.3v-336c0-41.2-33.4-74.7-74.7-74.7H208.8c-41.2 0-74.7 33.4-74.7 74.7v746.7c0 41.2 33.4 74.7 74.7 74.7h261.3c20.6 0 37.3-16.7 37.3-37.3 0.1-20.8-16.6-37.5-37.3-37.5z" p-id="2400"></path><path d="M641.3 496.5c-54.3 0-108.5 23.5-146.2 70.5-54.7 68.3-53.4 168.6 2.8 235.6 37.5 44.8 90.5 67.2 143.4 67.2 35.9 0 71.8-10.3 103-30.9l81.8 81.8c7.3 7.3 16.8 10.9 26.4 10.9 9.6 0 19.1-3.6 26.4-10.9 14.6-14.6 14.6-38.2 0-52.8l-81.8-81.8c48-72.5 40.1-171.1-23.7-234.9-36.5-36.4-84.3-54.7-132.1-54.7z m0 298.7c-36.5 0-72.9-17.6-95.3-52.9-22.6-35.6-22.6-82.5 0-118.1 22.4-35.3 58.9-52.9 95.3-52.9 36.5 0 72.9 17.6 95.3 52.9 22.6 35.6 22.6 82.5 0 118.1-22.4 35.2-58.8 52.9-95.3 52.9z" p-id="2401"></path></svg><em style="bottom: 1px;position: relative;">预览</em></i></a>`)); } function addMenu_doubleColumnPreview() { /* 添加底部菜单-高级-使用双列预览 */ $jq("#htmlon").parent().append($jq(` <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">使用双列预览</div> <div class="styli_r"> <input type="checkbox" name="postformdouble" id="postformdouble" value="" class="comiis_checkbox_key"> <label for="postformdouble" class="wauto"> <code class="bg_f b_ok comiis_checkbox ${open_double? "":"comiis_checkbox_close"}"></code> </label> </div> </li> `)); $jq("#postformdouble").on("click", function () { let obj = $jq(this); let code_obj = obj.parent().find(".comiis_checkbox"); if (code_obj.hasClass("comiis_checkbox_close")) { GM_setValue("preview_post_forum_by_double", true) } else { GM_setValue("preview_post_forum_by_double", false) } }) } function addMenu_immersiveInput() { /* 添加底部菜单-高级-使用沉浸输入 */ $jq("#htmlon").parent().append($jq(` <li class="comiis_styli_m f15 comiis_flex b_b"> <div class="flex">使用沉浸输入</div> <div class="styli_r"> <input type="checkbox" name="immersiveinput" id="immersiveinput" value="" class="comiis_checkbox_key"> <label for="immersiveinput" class="wauto"> <code class="bg_f b_ok comiis_checkbox comiis_checkbox_close"></code> </label> </div> </li> `)); $jq("#immersiveinput").on("click", function () { let obj = $jq(this); let code_obj = obj.parent().find(".comiis_checkbox"); console.log(code_obj.attr("class")); if (code_obj.hasClass("comiis_checkbox_close")) { $jq(".comiis_wzpost ul li.comiis_flex").hide(); /* 板块、标题 */ $jq(".comiis_wzpost ul li.comiis_styli.kmquote").hide(); /* 回复别人的quote */ $jq("#pollchecked").parent().parent().hide(); /* 投票,最多可填写 20 个选项 */ $jq("#pollm_c_1").hide(); /* 投票,增加一项 */ $jq(".comiis_polloption_add+div.f_0").hide(); /* 投票,增加一项(编辑状态下) */ $jq(".comiis_wzpost ul li.comiis_thread_content:contains('内容')").hide(); /* 投票,内容 */ } else { $jq(".comiis_wzpost ul li.comiis_flex").show(); $jq(".comiis_wzpost ul li.comiis_styli.kmquote").show(); $jq("#pollchecked").parent().parent().show(); $jq("#pollm_c_1").show(); $jq(".comiis_polloption_add+div.f_0").show(); $jq(".comiis_wzpost ul li.comiis_thread_content:contains('内容')").show(); } window.dispatchEvent(new Event("resize")); }) } const smiliesDictionaries = { /* 表情字典 */ "[呵呵]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq001.gif", "[撇嘴]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq002.gif", "[色]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq003.gif", "[发呆]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq004.gif", "[得意]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq005.gif", "[流泪]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq006.gif", "[害羞]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq007.gif", "[闭嘴]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq008.gif", "[睡]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq009.gif", "[大哭]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq010.gif", "[尴尬]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq011.gif", "[发怒]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq012.gif", "[调皮]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq013.gif", "[呲牙]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq014.gif", "[惊讶]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq015.gif", "[难过]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq016.gif", "[酷]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq017.gif", "[冷汗]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq018.gif", "[抓狂]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq019.gif", "[吐]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq020.gif", "[偷笑]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq021.gif", "[可爱]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq022.gif", "[白眼]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq023.gif", "[傲慢]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq024.gif", "[饥饿]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq025.gif", "[困]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq026.gif", "[惊恐]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq027.gif", "[流汗]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq028.gif", "[憨笑]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq029.gif", "[装逼]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq030.gif", "[奋斗]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq031.gif", "[咒骂]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq032.gif", "[疑问]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq033.gif", "[嘘]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq034.gif", "[晕]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq035.gif", "[折磨]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq036.gif", "[衰]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq037.gif", "[骷髅]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq038.gif", "[敲打]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq039.gif", "[再见]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq040.gif", "[擦汗]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq041.gif", "[抠鼻]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq042.gif", "[鼓掌]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq043.gif", "[糗大了]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq044.gif", "[坏笑]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq045.gif", "[左哼哼]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq046.gif", "[右哼哼]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq047.gif", "[哈欠]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq048.gif", "[鄙视]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq049.gif", "[委屈]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq050.gif", "[快哭了]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq051.gif", "[阴脸]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq052.gif", "[亲亲]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq053.gif", "[吓]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq054.gif", "[可怜]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq055.gif", "[眨眼睛]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq056.gif", "[笑哭]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq057.gif", "[dogeQQ]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq058.gif", "[泪奔]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq059.gif", "[无奈]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq060.gif", "[托腮]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq061.gif", "[卖萌]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq062.png", "[斜眼笑]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq063.gif", "[喷血]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq064.gif", "[惊喜]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq065.gif", "[骚扰]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq066.gif", "[小纠结]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq067.gif", "[我最美]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq068.gif", "[菜刀]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq069.gif", "[西瓜]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq070.gif", "[啤酒]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq071.gif", "[篮球]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq072.gif", "[乒乓]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq073.gif", "[咖啡]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq074.gif", "[饭]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq075.gif", "[猪]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq076.gif", "[玫瑰]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq077.gif", "[凋谢]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq078.gif", "[示爱]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq079.gif", "[爱心]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq080.gif", "[心碎]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq081.gif", "[蛋糕]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq082.gif", "[闪电]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq083.gif", "[炸弹]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq084.gif", "[刀]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq085.gif", "[足球]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq086.gif", "[瓢虫]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq087.gif", "[便便]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq088.gif", "[月亮]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq089.gif", "[太阳]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq090.gif", "[礼物]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq091.gif", "[抱抱]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq092.gif", "[喝彩]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq93.gif", "[祈祷]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq94.gif", "[棒棒糖]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq95.gif", "[药]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq96.gif", "[赞]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq097.gif", "[差劲]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq098.gif", "[握手]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq099.gif", "[胜利]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq100.gif", "[抱拳]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq101.gif", "[勾引]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq102.gif", "[拳头]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq103.gif", "[差劲]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq104.gif", "[爱你]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq105.gif", "[NO]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq106.gif", "[OK]": "https://cdn-bbs.mt2.cn/static/image/smiley/qq/qq107.gif", "[#呵呵]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_1.png", "[#滑稽]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_10.png", "[#吐舌]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_3.png", "[#哈哈]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_2.png", "[#啊]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_23.png", "[#酷]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_22.png", "[#怒]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_13.png", "[#开心]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_39.png", "[#汗]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_14.png", "[#泪]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_16.png", "[#黑线]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_15.png", "[#鄙视]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_21.png", "[#不高兴]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_12.png", "[#真棒]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_17.png", "[#钱]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_40.png", "[#疑问]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_26.png", "[#阴险]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_20.png", "[#吐]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_34.png", "[#咦]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_41.png", "[#委屈]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_29.png", "[#花心]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_6.png", "[#呼~]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_42.png", "[#激动]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_5.png", "[#冷]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_43.png", "[#可爱]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_4.png", "[#What?]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_25.png", "[#勉强]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_38.png", "[#狂汗]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_24.png", "[#酸爽]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_27.png", "[#乖]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_8.png", "[#雅美蝶]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_28.png", "[#睡觉]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_31.png", "[#惊哭]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_19.png", "[#哼]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_44.png", "[#笑尿]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_32.png", "[#惊讶]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_30.png", "[#小乖]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_7.png", "[#喷]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_18.png", "[#抠鼻]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_33.png", "[#捂嘴笑]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_9.png", "[#你懂的]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_11.png", "[#犀利]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_35.png", "[#小红脸]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_36.png", "[#懒得理]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_37.png", "[#爱心]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_45.png", "[#心碎]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_46.png", "[#玫瑰]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_47.png", "[#礼物]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_48.png", "[#彩虹]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_49.png", "[#太阳]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_50.png", "[#月亮]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_51.png", "[#钱币]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_52.png", "[#咖啡]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_53.png", "[#蛋糕]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_54.png", "[#大拇指]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_55.png", "[#胜利]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_56.png", "[#爱你]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_57.png", "[#OK]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_58.png", "[#弱]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_59.png", "[#沙发]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_60.png", "[#纸巾]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_61.png", "[#香蕉]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_62.png", "[#便便]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_63.png", "[#药丸]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_64.png", "[#红领巾]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_65.png", "[#蜡烛]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_66.png", "[#三道杠]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_67.png", "[#音乐]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_68.png", "[#灯泡]": "https://cdn-bbs.mt2.cn/static/image/smiley/comiis_tb/tb_69.png", "[doge]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/1.png", "[doge思考]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/2.png", "[doge再见]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/3.png", "[doge生气]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/4.png", "[doge气哭]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/5.png", "[doge笑哭]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/7.png", "[doge调皮]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/6.png", "[doge啊哈]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/8.png", "[doge原谅TA]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/9.png", "[miao]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/10.png", "[miao思考]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/11.png", "[miao拜拜]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/12.png", "[miao生气]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/13.png", "[miao气哭]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/14.png", "[二哈]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/15.png", "[摊手]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/19.png", "[w并不简单]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/20.png", "[w滑稽]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/21.png", "[w色]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/22.png", "[w爱你]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/23.png", "[w拜拜]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/24.png", "[w悲伤]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/25.png", "[w鄙视]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/26.png", "[w馋嘴]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/27.png", "[w冷汗]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/28.png", "[w打哈欠]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/29.png", "[w打脸]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/30.png", "[w敲打]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/31.png", "[w生病]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/32.png", "[w闭嘴]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/33.png", "[w鼓掌]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/34.png", "[w哈哈]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/35.png", "[w害羞]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/36.png", "[w呵呵]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/37.png", "[w黑线]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/38.png", "[w哼哼]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/39.png", "[w调皮]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/40.png", "[w可爱]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/41.png", "[w可怜]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/42.png", "[w酷]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/43.png", "[w困]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/44.png", "[w懒得理你]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/45.png", "[w流泪]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/46.png", "[w怒]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/47.png", "[w怒骂]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/48.png", "[w钱]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/49.png", "[w亲亲]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/50.png", "[w傻眼]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/51.png", "[w便秘]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/52.png", "[w失望]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/53.png", "[w衰]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/54.png", "[w睡觉]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/55.png", "[w思考]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/56.png", "[w开心]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/57.png", "[w色舔]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/58.png", "[w偷笑]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/59.png", "[w吐]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/60.png", "[w抠鼻]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/61.png", "[w委屈]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/62.png", "[w笑哭]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/63.png", "[w嘻嘻]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/64.png", "[w嘘]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/65.png", "[w阴险]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/66.png", "[w疑问]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/67.png", "[w抓狂]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/70.png", "[w晕]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/69.png", "[w右哼哼]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/68.png", "[w左哼哼]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/71.png", "[w肥皂]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/77.png", "[w奥特曼]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/78.png", "[w草泥马]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/79.png", "[w兔子]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/80.png", "[w熊猫]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/81.png", "[w猪头]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/82.png", "[w→_→]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/83.png", "[w给力]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/84.png", "[w囧]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/85.png", "[w萌]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/86.png", "[w神马]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/87.png", "[w威武]": "https://cdn-bbs.mt2.cn/static/image/smiley/doge/88.png", } function clickEvent(e) { /* 预览按钮点击事件 */ if ($jq("#polldatas").length) { /* 当前是投票帖子 */ replaceVote(); } if (!$jq(this).find("i.comiis_font").hasClass("f_0")) { $jq(".gm_plugin_previewpostforum_html").css("display", "block"); let replaecdText = replaceText($jq("#needmessage").val()); $jq(".gm_plugin_previewpostforum_html .comiis_message_table")[0].innerHTML = replaecdText; if (open_double) { $jq(".gm_plugin_previewpostforum_html.double-preview .comiis_over_box.comiis_input_style").css("height", $jq("#needmessage").css("height")); } } else { $jq(".gm_plugin_previewpostforum_html").hide(); } }; function replaceText(text) { /* 替换内容 */ let attachimgmatch = text.match(/\[attachimg\]([\s\S]+?)\[\/attachimg\]/g); if (attachimgmatch) { attachimgmatch.forEach(item => { let aimgidMatch = item.match(/\[attachimg\]([\s\S]+?)\[\/attachimg\]/); let aimg_id = aimgidMatch ? aimgidMatch[aimgidMatch.length - 1] : ""; let imgtitle = $jq(`#aimg_${aimg_id}`).attr("title"); let imgsrc = $jq(`#aimg_${aimg_id}`).attr("src"); if (!imgsrc) { imgtitle = "该图片不存在"; } text = text.replace(item, `<span class="comiis_postimg vm"><img id="aimg_${aimg_id}" src="${imgsrc}" alt="${imgtitle}" title="${imgtitle}"></span>`); }); } let code = text.match(/\[code\]([\s\S]*?)\[\/code\]/g); if (code) { code.forEach(item => { let match_content = item.match(/\[code\]([\s\S]*?)\[\/code\]/); let contentAll = match_content ? match_content[match_content.length - 1] : ""; let content = ""; let brSplit = contentAll.split("\n"); if (brSplit.length == 1) { content = "<li>" + contentAll + "</li>"; } else { Array.from(brSplit).forEach((item, index) => { if (index == brSplit.length - 1) { content = `${content}<li>${item}</li>`; } else { content = `${content}<li>${item}<br></li>`; } }) } text = text.replace(item, ` <div class="comiis_blockcode comiis_bodybg b_ok f_b"><div class="bg_f b_l"><ol>${content}</ol></div></div>`); }); } let url = text.match(/\[url\=[\s\S]*?\]([\s\S]*?)\[\/url\]/g); if (url) { url.forEach(item => { let urlMatch = item.match(/\[url=([\s\S]*?)\][\s\S]*\[\/url\]/); let urlNameMatch = item.match(/\[url=[\s\S]*?\]([\s\S]*?)\[\/url\]/); let _url_ = urlMatch ? urlMatch[urlMatch.length - 1] : ""; let _url_name_ = urlNameMatch ? urlNameMatch[urlNameMatch.length - 1] : ""; text = text.replace(item, `<a href="${_url_}" target="_blank">${_url_name_}</a>`); }); } let color = text.match(/\[color\=[\s\S]*?\]([\s\S]*?)\[\/color\]/g); if (color) { color.forEach(item => { let colorValueMatch = item.match(/\[color=([\s\S]*?)\][\s\S]*\[\/color\]/); let colorTextMatch = item.match(/\[color=[\s\S]*?\]([\s\S]*?)\[\/color\]/); let colorValue = colorValueMatch ? colorValueMatch[colorValueMatch.length - 1] : ""; let colorText = colorTextMatch ? colorTextMatch[colorTextMatch.length - 1] : ""; text = text.replace(item, `<font color="${colorValue}">${colorText}</font>`); }); } let size = text.match(/\[size\=[\s\S]*?\]([\s\S]*?)\[\/size\]/g); if (size) { console.log(size); size.forEach(item => { let sizeValueMatch = item.match(/\[size=([\s\S]*?)\][\s\S]*\[\/size\]/); let sizeTextMatch = item.match(/\[size=[\s\S]*?\]([\s\S]*?)\[\/size\]/); let sizeValue = sizeValueMatch ? sizeValueMatch[sizeValueMatch.length - 1] : ""; let sizeText = sizeTextMatch ? sizeTextMatch[sizeTextMatch.length - 1] : ""; text = text.replace(item, `<font size="${sizeValue}">${sizeText}</font>`); }); } let img = text.match(/\[img\]([\s\S]*?)\[\/img\]/g); if (img) { img.forEach(item => { let match_content = item.match(/\[img\]([\s\S]*?)\[\/img\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<img src="${content}" border="0" alt="">`); }); } let hide = text.match(/\[hide\]([\s\S]*?)\[\/hide\]/g); if (hide) { hide.forEach(item => { let match_content = item.match(/\[hide\]([\s\S]*?)\[\/hide\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<div class="comiis_quote bg_h f_c"><h2 class="f_a">本帖隐藏的内容: </h2>${content}</div>`); }); } let hide2 = text.match(/\[hide=[\s\S]*?\]([\s\S]*?)\[\/hide\]/g); if (hide2) { hide2.forEach(item => { let match_content = item.match(/\[hide=([\s\S]*?)\]([\s\S]*?)\[\/hide\]/); let other_info = match_content ? match_content[match_content.length - 2] : ""; other_info = other_info.split(","); let integral_big_can_see = other_info.length == 2 ? other_info[1] : ""; text = text.replace(item, `<div class="comiis_quote bg_h f_c">以下内容需要积分高于 ${integral_big_can_see} 才可浏览</div>`); }); } let quote = text.match(/\[quote\]([\s\S]*?)\[\/quote\]/g); if (quote) { quote.forEach(item => { let match_content = item.match(/\[quote\]([\s\S]*?)\[\/quote\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<div class="comiis_quote bg_h b_dashed f_c"><blockquote><font>回复</font> ${content}</blockquote></div>`); }); } let free = text.match(/\[free\]([\s\S]*?)\[\/free\]/g); if (free) { free.forEach(item => { let match_content = item.match(/\[free\]([\s\S]*?)\[\/free\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<div class="comiis_quote bg_h f_c"><blockquote>${content}</blockquote></div>`); }); } let strong = text.match(/\[b\]([\s\S]*?)\[\/b\]/g); if (strong) { strong.forEach(item => { let match_content = item.match(/\[b\]([\s\S]*?)\[\/b\]/i); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<strong>${content}</strong>`); }); } let xhx = text.match(/\[u\]([\s\S]*?)\[\/u\]/g); if (xhx) { xhx.forEach(item => { let match_content = item.match(/\[u\]([\s\S]*?)\[\/u\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<u>${content}</u>`); }); } let qx = text.match(/\[i\]([\s\S]*?)\[\/i\]/g); if (qx) { qx.forEach(item => { let match_content = item.match(/\[i\]([\s\S]*?)\[\/i\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<i>${content}</i>`); }); } let strike = text.match(/\[s\]([\s\S]*?)\[\/s\]/g); if (strike) { strike.forEach(item => { let match_content = item.match(/\[s\]([\s\S]*?)\[\/s\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<strike>${content}</strike>`); }); } let smilies = text.match(/\[([\s\S]+?)\]/g); if (smilies) { smilies.forEach(item => { console.log(item); let smiliesMatchSrc = smiliesDictionaries[item]; if (smiliesMatchSrc) { text = text.replace(item, `<img src="${smiliesMatchSrc}" border="0" alt="" smilieid="">`); } }); } let media = text.match(/\[media=[\s\S]+?\][\s\S]+?\[\/media\]/g); if (media) { media.forEach(item => { console.log(item); let match_content = item.match(/\[media=[\s\S]*?\]([\s\S]*?)\[\/media\]/); let content = match_content ? match_content[match_content.length - 1] : ""; if (content) { text = text.replace(item, `<ignore_js_op><span><iframe src="${content}" border="0" scrolling="no" framespacing="0" allowfullscreen="true" style="max-width: 100%" width="100%" height="auto" frameborder="no"></iframe></span></ignore_js_op>`); } }); } let email = text.match(/\[email=[\s\S]+?\][\s\S]+?\[\/email\]/g); if (email) { email.forEach(item => { console.log(item); let email_match = item.match(/\[email=([\s\S]*?)\][\s\S]*?\[\/email\]/); let content_match = item.match(/\[email=[\s\S]*?\]([\s\S]*?)\[\/email\]/); let _email_ = email_match.length ? email_match[email_match.length - 1] : ""; let _content_ = content_match.length ? content_match[content_match.length - 1] : ""; if (_email_ || _content_) { text = text.replace(item, `<a href="mailto:${_email_}">${_content_}</a>`); } }); } let align = text.match(/\[align=[\s\S]+?\][\s\S]+?\[\/align\]/g); if (align) { align.forEach(item => { console.log(item); let align_match = item.match(/\[align=([\s\S]*?)\][\s\S]+?\[\/align\]/); let content_match = item.match(/\[align=[\s\S]*?\]([\s\S]+?)\[\/align\]/); let _align_ = align_match.length ? align_match[align_match.length - 1] : ""; let _content_ = content_match.length ? content_match[content_match.length - 1] : ""; if (_align_ || _content_) { text = text.replace(item, `<div align="${_align_}">${_content_}</div>`); } }); } let qq = text.match(/\[qq\][\s\S]*?\[\/qq\]/g); if (qq) { qq.forEach(item => { console.log(item); let match_content = item.match(/\[qq\]([\s\S]*?)\[\/qq\]/); let content = match_content ? match_content[match_content.length - 1] : ""; /* 这个是以前的wpa协议,现在是tencent协议,mt的discuz没有更新,如:tencent://message/?uin=xxx&site=bbs.binmt.cc&menu=yes */ text = text.replace(item, `<a href="http://wpa.qq.com/msgrd?v=3&uin=${content}&site=[Discuz!]&from=discuz&menu=yes" target="_blank"><img src="static/image/common/qq_big.gif" border="0"></a>`); }); } let td = text.match(/\[td\][\s\S]+?\[\/td\]/g); if (td) { td.forEach(item => { console.log(item); let match_content = item.match(/\[td\]([\s\S]*?)\[\/td\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<td>${content}</td>`); }); } let tr = text.match(/\[tr\][\s\S]+?\[\/tr\]/g); if (tr) { tr.forEach(item => { console.log(item); let match_content = item.match(/\[tr\]([\s\S]*?)\[\/tr\]/); let content = match_content ? match_content[match_content.length - 1] : ""; text = text.replace(item, `<tr>${content}</tr>`); }); } let table = text.match(/\[table\][\s\S]+?\[\/table\]/g); if (table) { table.forEach(item => { console.log(item); let match_content = item.match(/\[table\]([\s\S]*?)\[\/table\]/); let content = match_content ? match_content[match_content.length - 1] : ""; content = content.replace(/\n/g, ""); text = text.replace(item, `<table>${content}</table>`); }); } let list = text.match(/\[list=[\s\S]+?\][\s\S]+?\[\/list\]/g); if (list) { list.forEach(item => { console.log(item); let list_model_match = item.match(/\[list=([\s\S]*?)\][\s\S]*?\[\/list\]/); let list_content_match = item.match(/\[list=[\s\S]*?\]([\s\S]*?)\[\/list\]/); let list_model = list_model_match ? list_model_match[list_model_match.length - 1] : ""; let list_type = ""; if (list_model === "a") { list_type = "litype_2"; } else if (list_model === "A") { list_type = "litype_3"; } else if (list_model.length === 1 && list_model.match(/[0-9]{1}/)) { list_type = "litype_1"; } let content = list_content_match ? list_content_match[list_content_match.length - 1] : ""; let li_split = content.split("[*]"); if (li_split.length > 1) { let newContent = ""; if (li_split[0].replace(/[\s]*/, '') == "") { li_split = li_split.slice(1); } Array.from(li_split).forEach(item => { newContent = newContent + "<li>" + item + "</li>"; }); content = newContent; } content = content.replace(/\n/g, ""); text = text.replace(item, `<ul type="${list_model}" class="${list_type}">${content}</ul>`); }); } $jq(".gm_plugin_previewpostforum_html .comiis_quote.comiis_qianglou").remove(); let password = text.match(/\[password\](.*?)\[\/password\]/ig); if (password) { password.forEach(item => { console.log(item); text = item.replace(/\[password\](.*?)\[\/password\]/ig, ""); $jq(".gm_plugin_previewpostforum_html .comiis_message_table").before($jq(` <div class="comiis_quote comiis_qianglou bg_h" style="display: flex;"> <i class="comiis_font f_a" style="font-size: 16px;"></i> 付费主题, 价格: <strong>${$jq("#price").val()} 金币</strong> <a href="javascript:;" class="y f_a" style="height: auto;color: #FF9900 !important;right: 5px;position: absolute;">记录</a></div>`)); }) } let every_reward = parseInt($jq("#replycredit_extcredits").val()); let total_reward = parseInt($jq("#replycredit_times").val()); let getreward_menbertimes = parseInt($jq("#replycredit_membertimes").val()); let getreward_random = parseInt($jq("#replycredit_random").val()); $jq(".gm_plugin_previewpostforum_html .comiis_htjl").remove(); if (!isNaN(every_reward) && !isNaN(total_reward) && every_reward > 0 && total_reward > 0) { $jq(".gm_plugin_previewpostforum_html .comiis_message_table").before($jq(` <div class="comiis_htjl bg_h f_a"> <i class="comiis_font"></i> 总共奖励 ${total_reward} 金币<br>回复本帖可获得 ${every_reward} 金币奖励! 每人限 ${getreward_menbertimes} 次 ${getreward_random != 100 ? "(中奖概率 "+getreward_random+"%)":""} </div> `)); } text = text.replace(/\[hr\]/g, '<hr class="l">'); text = text.replace(/\[\*\]/g, '<li></li>'); text = text.replace(/\n/g, "<br>"); return text; } function replaceVote() { /* 替换预览投票 */ let chooseColor = ["rgb(233, 39, 37)", "rgb(242, 123, 33)", "rgb(242, 166, 31)", "rgb(90, 175, 74)", "rgb(66, 196, 245)", "rgb(0, 153, 204)", "rgb(51, 101, 174)", "rgb(42, 53, 145)", "rgb(89, 45, 142)", "rgb(219, 49, 145)", "rgb(233, 39, 37)", "rgb(242, 123, 33)", "rgb(242, 166, 31)", "rgb(90, 175, 74)", "rgb(66, 196, 245)", "rgb(0, 153, 204)", "rgb(51, 101, 174)", "rgb(42, 53, 145)", "rgb(89, 45, 142)", "rgb(219, 49, 145)" ]; /* 选择的背景 */ let chooseContent = $jq(".comiis_polloption_add ul li:first-child div.flex .comiis_input.kmshow[type='text']"); /* 选项,最多20个 */ let maxchoices = parseInt($jq("input#maxchoices").val()); /* 最多可选 */ maxchoices = isNaN(maxchoices) ? 0 : maxchoices; maxchoices = maxchoices > 0 ? maxchoices : 0; maxchoices = maxchoices > chooseContent.length ? chooseContent.length : maxchoices; /* 大于当前选项数量的话为当前最大选项数量 */ let polldatas = parseInt($jq("input#polldatas").val()); /* 记票天数 */ polldatas = isNaN(polldatas) ? 0 : polldatas; let visibilitypoll = $jq("input#visibilitypoll").parent().find(".comiis_checkbox").hasClass("comiis_checkbox_close") ? false : true; /* 投票后结果可见 */ let overt = $jq("input#overt").parent().find(".comiis_checkbox").hasClass("comiis_checkbox_close") ? false : true; /* 公开投票参与人 */ let html = ""; let choosehtml = ""; console.log(chooseContent); chooseContent.each((i, v) => { if (i >= 20) { /* 最多20个 */ return; } choosehtml = choosehtml + ` <li class="kmnop"> <input type="${(maxchoices > 1) ? 'checkbox':'radio'}"> <label><i class="comiis_font f_d"></i>${v.value}</label> </li> <li class="poll_ok cl"> <span class="bg_b"> <em style="width:2%;background-color:${chooseColor[i]}"></em> </span> <em style="color:${chooseColor[i]}">0% (0)</em> </li>`; }); html = ` <div class="comiis_poll cl comiis_input_style b_t postforum_vote"> <div class="comiis_poll_top"> <i class="comiis_font bg_a f_f"></i> <h2>${(maxchoices > 1) ? '多选投票'+'<em class="f_c"> 最多可选 '+maxchoices+' 项</em>':"单选投票"}</h2> <p class="f_c">共有 0 人参与投票</p> ${polldatas > 0 ? ` <p class="kmbtn"> <span class="bg_e">距结束还有: ${polldatas > 1 ? '<em class="f_a">'+(polldatas-1)+'</em> 天 ':''}<em class="f_a">23</em> 小时 <em class="f_a">59</em> 分钟</span> </p>`:""} </div> <div class="comiis_poll_list comiis_input_style cl"> <ul> ${choosehtml} </ul> </div> <div class="comiis_poll_bottom cl"> <input type="submit" value="提交" class="formdialog comiis_btn kmshow bg_c f_f" disabled> ${overt ? '<div class="comiis_quote bg_h b_dashed f_a"><i class="comiis_font"></i>此为公开投票,其他人可看到您的投票项目</div>':""} </div> </div> `; $jq(".gm_plugin_previewpostforum_html .postforum_vote").remove(); $jq(".gm_plugin_previewpostforum_html .comiis_messages.comiis_aimg_show").children().eq(0).before($jq(html)); } function keyUpEvent(e) { /* 内容输入事件 */ let userInputText = e.target.value; let replaecdText = replaceText(userInputText); $jq(".gm_plugin_previewpostforum_html .comiis_message_table")[0].innerHTML = replaecdText; }; if (typeof unsafeWindow.comiis_addsmilies == "function") { /* 替换全局函数添加图片到里面触发input */ unsafeWindow.comiis_addsmilies = (a) => { unsafeWindow.$('#needmessage').comiis_insert(a); unsafeWindow.$("#needmessage")[0].dispatchEvent(new Event('input')); } } addMenu_doubleColumnPreview(); addMenu_preview(); addMenu_immersiveInput(); if (open_double) { /* box-shadow: -1px 0px 8px; */ $jq("#needmessage").parent().css("display", "flex"); $jq("#needmessage").after($jq(` <div class="bg_f cl gm_plugin_previewpostforum_html double-preview" style="display: none;"> <div class="comiis_over_box comiis_input_style"> <div class="comiis_postli comiis_list_readimgs nfqsqi" style="width: 50vw;"> <div class="comiis_message bg_f view_one cl message" style="margin-bottom: auto;padding: 0px 12px 0px 12px;"> <div class="comiis_messages comiis_aimg_show cl" style="overflow-y: auto;position: relative;"> <div class="comiis_a comiis_message_table cl" style="margin: 0;"> </div> </div> </div> </div> </div> </div>`)); } else { $jq("#comiis_post_tab").append($jq(` <div class="bg_f cl gm_plugin_previewpostforum_html" style="display: none;"> <div class="comiis_over_box comiis_input_style"> <div class="comiis_postli comiis_list_readimgs nfqsqi"> <div class="comiis_message bg_f view_one cl message" style="margin-bottom: auto;padding: 0px 12px 0px 12px;"> <div class="comiis_messages comiis_aimg_show cl" style="overflow-y: auto;position: relative;"> <div class="comiis_a comiis_message_table cl"> </div> </div> </div> </div> </div> </div>`)); } $jq("#needmessage").on("propertychange input", keyUpEvent); $jq(".gm_plugin_previewpostforum").on("click", clickEvent); }, quickUBB: { code: { "rainbow1": { "key": "转普通彩虹", "value": "", "isFunc": true, "num": 1 }, "rainbow2": { "key": "转黑白彩虹", "value": "", "isFunc": true, "num": 2 }, "rainbow3": { "key": "转黑红彩虹", "value": "", "isFunc": true, "num": 3 }, "rainbow4": { "key": "转蓝绿彩虹", "value": "", "isFunc": true, "num": 4 }, "size": { "key": "size", "value": "[size=][/size]", "tagL": "=", "tagR": "]", "L": "[size=]", "R": "[/size]", "cursorL": "[size=", "cursorLength": 6, "quickUBBReplace": "[size=14]replace[/size]" }, "color": { "key": "color", "value": "[color=][/color]", "tagL": "=", "tagR": "]", "L": "[color=]", "R": "[/color]", "cursorL": "[color=", "cursorLength": 7, "quickUBBReplace": "[color=#000]replace[/color]" }, "b": { "key": "加粗", "value": "[b][/b]", "tagL": "]", "tagR": "[", "L": "[b]", "R": "[/b]", "cursorR": "[/b]", "cursorLength": 4, "quickUBBReplace": "[b]replace[/b]" }, "u": { "key": "下划线", "value": "[u][/u]", "tagL": "]", "tagR": "[", "L": "[u]", "R": "[/u]", "cursorR": "[/u]", "cursorLength": 4, "quickUBBReplace": "[u]replace[/u]" }, "i": { "key": "倾斜", "value": "[i][/i]", "tagL": "]", "tagR": "[", "L": "[i]", "R": "[/i]", "cursorR": "[/i]", "cursorLength": 4, "quickUBBReplace": "[i]replace[/i]" }, "s": { "key": "中划线", "value": "[s][/s]", "tagL": "]", "tagR": "[", "L": "[s]", "R": "[/s]", "cursorR": "[/s]", "cursorLength": 4, "quickUBBReplace": "[s]replace[/s]" }, "lineFeed": { "key": "换行", "value": "[*]", "L": "", "R": "[*]", "cursorL": "[*]", "cursorLength": 3, "quickUBBReplace": "replace[*]" }, "longHorizontalLine": { "key": "水平线", "value": "[hr]", "L": "", "R": "[hr]", "cursorL": "[hr]", "cursorLength": 4, "quickUBBReplace": "replace[hr]" }, "link": { "key": "链接", "value": "[url=][/url]", "tagL": "=", "tagR": "]", "L": "[url=]", "R": "[/url]", "cursorL": "[url=", "cursorLength": 5, "quickUBBReplace": "[url=replace]replace[/url]" }, "hide": { "key": "隐藏", "value": "[hide][/hide]", "tagL": "]", "tagR": "[", "L": "[hide]", "R": "[/hide]", "cursorR": "[/hide]", "cursorLength": 7, "quickUBBReplace": "[hide]replace[/hide]" }, "quote": { "key": "引用", "value": "[quote][/quote]", "tagL": "]", "tagR": "[", "L": "[quote]", "R": "[/quote]", "cursorR": "[/quote]", "cursorLength": 8, "quickUBBReplace": "[quote]replace[/quote]" }, "email": { "key": "邮件", "value": "[email=][/email]", "tagL": "=", "tagR": "]", "L": "[email=]", "R": "[/email]", "cursorL": "[email=", "cursorLength": 7, "quickUBBReplace": "[email=replace]replace[/email]" } }, insertQuickReplyUBB: () => { /* 快捷回复 */ $jq.each(mobile.quickUBB.code, function (index, value) { let ubbs = $jq(`<li class="quickUBBs"><a href="javascript:;" class="comiis_xifont f_d"><i class="comiis_font"></i>${value["key"]}</a></li>`); ubbs.on("click", function () { $jq("#comiis_insert_ubb_tab div.comiis_post_urlico ul li.quickUBBs a.comiis_xifont").removeClass("f_0").addClass("f_d"); $jq(this).find(".comiis_xifont").removeClass("f_d").addClass("f_0"); popup2.confirm({ text: `<input type="text" placeholder="请输入需要${value["key"]}的文字" class="quickinsertbbsdialog"> <style> .quickinsertbbsdialog::-webkit-input-placeholder{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color: #cfcfcf; } .quickinsertbbsdialog{ height: 32px; line-height: 32px; border: none; font-size: 15px; border-bottom: 1px solid #000; margin: 30px 12px 10px 12px; width: -webkit-fill-available; }</style>`, mask: true, only: true, callback: () => { let userInput = $jq(".quickinsertbbsdialog").val().trim(); if (userInput == null || userInput.trim() == "") { return; } if (value["isFunc"]) { comiis_addsmilies(mobile.quickUBB.set_rainbow(value["num"], userInput)); /* 插入贴内 */ } else if (value["quickUBBReplace"]) { comiis_addsmilies(value["quickUBBReplace"].replaceAll("replace", userInput)); /* 插入贴内 */ } else { comiis_addsmilies(userInput); /* 插入贴内 */ } popup2.confirm_close(); /* if (value["isFunc"]) { userInput = mobile.quickUBB.set_rainbow(value["num"], userInput); }*/ } }) }) $jq("#comiis_insert_ubb_tab div.comiis_post_urlico ul").append(ubbs[0]); }) }, insertReplayUBB: () => { /* 具体回复 */ let insertDOM = $jq(".comiis_post_urlico"); if (!insertDOM) { console.log("未找到插入元素"); return; } GM_addStyle(` #comiis_post_tab .comiis_input_style .comiis_post_urlico li a.f_0{ color: #53bcf5 !important; } `); let parentEle = $jq(".comiis_post_urlico > ul")[0]; let contentEle = $jq("#comiis_post_qydiv > ul"); let childNums = $jq("#comiis_post_qydiv ul li").length; mobile.quickUBB.jqueryExtraFunction(); $jq("#comiis_post_tab .comiis_input_style .comiis_post_urlico li").on("click", function () { $jq("#comiis_post_tab .comiis_input_style .comiis_post_urlico li a").removeClass("f_0"); $jq("#comiis_post_tab .comiis_input_style .comiis_post_urlico li a").addClass("f_d"); $jq(this).find("a").attr("class", "comiis_xifont f_0"); $jq("#comiis_post_qydiv ul li").hide().eq($jq(this).index()).fadeIn(); }) $jq.each(mobile.quickUBB.code, function (key, value) { let ubbs = $jq(`<li class="quickUBBs"><a href="javascript:;" class="comiis_xifont f_d"><i class="comiis_font"></i>${value["key"]}</a></li>`); ubbs.on("click", (e) => { let bottomEle = $jq(`#comiis_post_qydiv li[data-key='${value.key}']`); if (!bottomEle.length) { console.log("未找到该元素"); return } let contentIndex = childNums + Object.keys(mobile.quickUBB.code).indexOf(key); console.log(contentIndex); $jq("#comiis_post_qydiv ul li").hide().eq(contentIndex).fadeIn(); $jq.each($jq("#comiis_post_tab div.comiis_post_urlico ul li a.comiis_xifont"), (i, v) => { v.className = "comiis_xifont f_d"; if (v == e.target) { v.className = "comiis_xifont f_0"; } }); }) parentEle.append(ubbs[0]); let ubbs_content = document.createElement("li"); ubbs_content.setAttribute("style", "display: none;"); ubbs_content.setAttribute("data-key", value["key"]); ubbs_content.innerHTML = ` <div class="comiis_styli_m f15" style="padding-top:12px;"> <div class="bg_e comiis_p5" style="border-radius:4px"><textarea class="comiis_pt kmshow f_c" id="comiis_input_${key}" style="font-size:15px" placeholder="请输入需要${value["key"]}的文字"></textarea></div> </div> <div class="comiis_styli_m f15 comiis_flex" style="padding-top:0;"> <div class="styli_tit"><button class="comiis_sendbtn bg_0 f_f" data-keyI="${key}" type="button">插入</button></div> <div class="flex"></div> </div>`; contentEle.append(ubbs_content); $jq(`.comiis_sendbtn[data-keyI="${key}"]`).on("click", () => { let text = $jq(`#comiis_input_${key}`).val(); if (text == '') { popup2.toast('请输入需要插入的内容'); return; } if (mobile.quickUBB.code[key]["isFunc"]) { text = mobile.quickUBB.set_rainbow(mobile.quickUBB.code[key]["num"], text); } if (mobile.quickUBB.code[key].hasOwnProperty("L")) { text = mobile.quickUBB.code[key]['L'] + text + mobile.quickUBB.code[key]['R']; } $jq("#needmessage").insertAtCaret(text); /* if (mobile.quickUBB.code[key]["tagL"] != undefined || mobile.quickUBB.code[key]["tagR"] != undefined) { $jq("#needmessage").moveCursorInCenterByText(mobile.quickUBB.code[key]["tagL"], mobile.quickUBB.code[key]["tagR"]); }*/ if (mobile.quickUBB.code[key].hasOwnProperty("cursorL")) { $jq("#needmessage").moveCursorToCenterByTextWithLeft(mobile.quickUBB.code[key]["cursorL"], mobile.quickUBB.code[key]["cursorLength"]); } if (mobile.quickUBB.code[key].hasOwnProperty("cursorR")) { $jq("#needmessage").moveCursorToCenterByTextWithRight(mobile.quickUBB.code[key]["cursorR"], mobile.quickUBB.code[key]["cursorLength"]); } }) }); }, set_rainbow: (num, text) => { if (text == "") { return ''; } var wr_text = text; var wr_code, wr_rgb, r, g, b, i, j, istep var wr_rgb1, wr_rgb2, r1, g1, b1, r2, g2, b2 r1 = g1 = b1 = r2 = g2 = b2 = 0; r = 0; g = 0; b = 0; istep = 0; wr_code = ''; if (num == 1) { istep = 40; r = 255; i = 1; j = 0; do { if (wr_text.charCodeAt(j) != 32) { if (g + istep < 256) { if (i == 1) g += istep; } else if (i == 1) { i = 2; g = 255; } if (r - istep > -1) { if (i == 2) r -= istep; } else if (i == 2) { i = 3; r = 0; } if (b + istep < 256) { if (i == 3) b += istep; } else if (i == 3) { i = 4; b = 255; } if (g - istep > -1) { if (i == 4) g -= istep; } else if (i == 4) { i = 5; g = 0; } if (r + istep < 256) { if (i == 5) r += istep; } else if (i == 5) { i = 6; r = 255; } if (b - istep > -1) { if (i == 6) b -= istep; } else if (i == 6) { i = 1; b = 0; } wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(b).toString(16).length == 1 ? 0 + parseInt(b).toString(16) : parseInt(b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(j) + '[/color]'; } else { wr_code += wr_text.charAt(j); } j++; } while (j < wr_text.length); } else if (num == 2) { istep = 255 / wr_text.length; for (i = 1; i < wr_text.length + 1; i++) { if (wr_text.charCodeAt(i - 1) != 32) { r += istep; g += istep; b += istep; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(b).toString(16).length == 1 ? 0 + parseInt(b).toString(16) : parseInt(b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(i - 1) + '[/color]'; } else { wr_code += wr_text.charAt(i - 1); } } } else if (num == 3) { istep = 255 / wr_text.length; for (i = 1; i < wr_text.length + 1; i++) { if (wr_text.charCodeAt(i - 1) != 32) { r += istep; g = 29; b = 36; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(b).toString(16).length == 1 ? 0 + parseInt(b).toString(16) : parseInt(b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(i - 1) + '[/color]'; } else { wr_code += wr_text.charAt(i - 1); } } } else if (num == 4) { istep = 255 / wr_text.length; for (i = 1; i < wr_text.length + 1; i++) { if (wr_text.charCodeAt(i - 1) != 32) { r = 0; g = 174; b += istep; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(255 - b).toString(16).length == 1 ? 0 + parseInt(255 - b).toString(16) : parseInt(255 - b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(i - 1) + '[/color]'; } else { wr_code += wr_text.charAt(i - 1); } } } return wr_code; }, jqueryExtraFunction: () => { $jq.fn.extend({ insertAtCaret: function (myValue) { var $t = $jq(this)[0]; if (document.selection) { this.focus(); var sel = document.selection.createRange(); sel.text = myValue; this.focus(); } else if ($t.selectionStart || $t.selectionStart == '0') { var startPos = $t.selectionStart; var endPos = $t.selectionEnd; var scrollTop = $t.scrollTop; $t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length); this.focus(); $t.selectionStart = startPos + myValue.length; $t.selectionEnd = startPos + myValue.length; $t.scrollTop = scrollTop; } else { this.value += myValue; this.focus(); } }, selectRange: function (start, end) { if (end === undefined) { end = start; } return this.each(function () { if ('selectionStart' in this) { this.selectionStart = start; this.selectionEnd = end; } else if (this.setSelectionRange) { this.setSelectionRange(start, end); } else if (this.createTextRange) { var range = this.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', start); range.select(); } }); }, getCursorPosition: function () { var el = $jq(this)[0]; var pos = 0; if ('selectionStart' in el) { pos = el.selectionStart; } else if ('selection' in document) { el.focus(); var Sel = document.selection.createRange(); var SelLength = document.selection.createRange().text.length; Sel.moveStart('character', -el.value.length); pos = Sel.text.length - SelLength; } return pos; }, moveCursorInCenterByText: function (leftTextFlag, rightTextFlag) { var el = $jq(this)[0]; var el_text = el.value; for (let i = el.selectionStart - 1; i > 0; i--) { let LText = el_text[i - 1]; let currentText = el_text[i]; if (LText == leftTextFlag && currentText == rightTextFlag) { this.selectRange(i); break; } } }, moveCursorToCenterByTextWithLeft: function (leftMatchText, _length_) { var el = $jq(this)[0]; var el_text = el.value; for (let i = el.selectionStart - 1; i > 0; i--) { let lTexts = el_text.substring(i - _length_, i); if (lTexts == leftMatchText) { this.selectRange(i); break; } } }, moveCursorToCenterByTextWithRight: function (rightMatchText, _length_) { var el = $jq(this)[0]; var el_text = el.value; for (let i = el.selectionStart - 1; i > 0; i--) { let rTexts = el_text.substring(i, i + _length_); if (rTexts == rightMatchText) { this.selectRange(i + _length_); break; } } } }); } }, recoveryIMGWidth() { /* 修复图片宽度 */ if (GM_getValue("v16") && window.location.href.match(mt_config.rexp.forum_post)) { GM_addStyle(` .comiis_messages img{ max-width: 100% !important; } `) } }, removeForumPostCommentFontStyle() { /* 移除评论区字体效果 */ if (GM_getValue("v3") && window.location.href.match(mt_config.rexp.forum_post)) { var hide = document.getElementsByTagName('font'); var postForumMain = document.querySelector(".comiis_ordertype") ? document.querySelector(".comiis_postlist.kqide .comiis_postli").innerHTML : ''; for (let i = 0; i < hide.length; i++) { if (postForumMain.indexOf(hide[i].innerHTML) == -1) { console.log(hide[i].innerHTML); hide[i].removeAttribute('color'); hide[i].removeAttribute('style'); hide[i].removeAttribute('size'); } } var content = document.getElementsByClassName("comiis_message bg_f view_all cl message"); for (let i = 0; i < content.length; i++) { if (postForumMain.indexOf(content[i].innerHTML) == -1) { content[i].innerHTML = content[i].innerHTML.replace(mt_config.rexp.font_special, ''); } } } }, removeForumPostFontStyle() { /* 移除帖子内的字体style */ if (GM_getValue("v1") && window.location.href.match(mt_config.rexp.forum_post)) { if ($jq(".comiis_a.comiis_message_table.cl").eq(0).html()) { $jq(".comiis_a.comiis_message_table.cl").eq(0).html($jq(".comiis_a.comiis_message_table.cl").eq(0).html().replace(mt_config.rexp.font_special, '')); } } }, repairClearSearchInput() { /* 修复搜索的清空按钮 */ if (GM_getValue("v36") && window.location.href.match(mt_config.rexp.search_url)) { let $search_input = $jq(".ssclose.bg_e.f_e"); if ($search_input) { $search_input.click(function (e) { e.preventDefault(); $jq("#scform_srchtxt").val("") }) } else { log.error("搜索界面: 获取清空按钮失败"); } } }, repairUnableToEnterOtherSpaceCorrectly() { /* 修复无法正确进入别人的空间 */ if (!GM_getValue("v37")) { return; }; if (window.location.href.match(mt_config.rexp.home_url_brief)) { let href_params = window.location.href.match(/home.php\?(.+)/gi); href_params = href_params[href_params.length - 1]; let params_split = href_params.split("&"); if (params_split.length == 2 && href_params.indexOf("uid=") != -1 && href_params.indexOf("mod=space") != -1) { window.location.href = window.location.href + "&do=profile"; } } if (window.location.href.match(mt_config.rexp.home_url_at)) { let href_params = window.location.href.match(/space-uid-(.+).html/i); href_params = href_params[href_params.length - 1]; window.location.href = `https://bbs.binmt.cc/home.php?mod=space&uid=${href_params}&do=profile`; } }, searchHistory() { /* 搜索历史 */ if (GM_getValue("v19") && location.href.match(mt_config.rexp.search_url)) { function search_event() { /* 搜索历史事件 */ /* 搜索界面增加关闭按钮事件,清空input内容 */ /* 点击搜索保存搜索记录 */ $jq("#scform_submit").click(function () { let getsearchtext = $jq("#scform_srchtxt").val(); if ((getsearchtext != null) && (getsearchtext != "")) { let search_history_array = new Array(getsearchtext); let has_history = GM_getValue("search_history"); if (has_history != null) { if ($jq.inArray(getsearchtext, has_history) != -1) { console.log("已有该搜索历史记录") search_history_array = has_history } else { console.log("无该记录,追加"); search_history_array = search_history_array.concat(has_history); } } else { console.log("空记录,添加") } GM_setValue("search_history", search_history_array); } }) } function add_search_history() { /* 搜索界面添加搜索历史记录 */ $jq("#scform_srchtxt").attr("list", "search_history"); var search_history_list = GM_getValue("search_history"); var dom_datalist = document.createElement("datalist"); dom_datalist.id = "search_history"; var option_text = ""; if (search_history_list) { for (var i = 0; i < search_history_list.length; i++) { option_text = option_text + '<option value="' + search_history_list[i] + '">'; } dom_datalist.innerHTML = option_text; $jq(".comiis_flex").append(dom_datalist); } } function add_clear_history() { /* 搜索界面添加清理历史记录和历史记录个数 */ let search_history_list = GM_getValue("search_history"); let search_history_nums = 0; if (search_history_list != null) { search_history_nums = search_history_list.length; } let clear_history_innerHTML = `<div class="comiis_p12 f14 bg_f f_c b_b cl" style="padding-bottom:10px">搜索记录个数: ` + search_history_nums + `<button class="btn_clear_search_history" style=" border: none; float: right; background: red; color: #fff; border-radius: 3px; font-weight: 600; min-width: 20vw; width: 20vw; ">清理记录</button></div>`; let insertdom = $jq(".comiis_p12.f14.bg_f.f_c.b_b.cl,.comiis_tagtit.b_b.f_c"); insertdom.before(clear_history_innerHTML); $jq(".btn_clear_search_history").click(function () { GM_deleteValue("search_history"); window.location.reload(); }) } search_event(); add_search_history(); add_clear_history(); } }, selectPostingSection() { /* 在发帖/编辑帖子时选择发帖板块 */ if (!window.location.href.match(mt_config.rexp.post_forum) && !window.location.href.match(mt_config.rexp.edit_forum)) { return; } GM_addStyle(` #select-post-section{ height: 28px; width: 160px; line-height: 28px; border: 1px solid #ececec; background: url(w.png) no-repeat; background-position: 95% 50%; -webkit-appearance: none; appearance: none; -moz-appearance: none; } `); let section_dict = { "2": "版本发布", "37": "插件交流", "38": "建议反馈", "41": "逆向交流", "39": "玩机交流", "42": "编程开发", "40": "求助问答", "44": "综合交流", "50": "休闲灌水", "46": "官方公告", "53": "申诉举报", "92": "站务专区" } $jq(".comiis_post_from .comiis_wzpost.comiis_input_style .comiis_styli:contains('标题')").before($jq(` <li class="comiis_styli_section comiis_flex b_b" style="padding: 10px 12px;font-size: 16px;"> <div class="styli_section f_c" style="padding-right: 8px;vertical-align: top;">板块</div> <div class="flex"> <select id="select-post-section" style="vertical-align:top;border-color:transparent;font-size: 17px;font-weight: 300;text-overflow:ellipsis;white-space:nowrap;"> <option value="2">版本发布</option> <option value="37">插件交流</option> <option value="38">建议反馈</option> <option value="39">玩机交流</option> <option value="40">求助问答</option> <option value="41">逆向交流</option> <option value="42">编程开发</option> <option value="44">综合交流</option> <option value="46">官方公告</option> <option value="50">休闲灌水</option> <option value="53">申诉举报</option> <option value="92">站务专区</option> </select> </div> </li> `)); let selectNode = $jq(`#select-post-section`); let currentSection = window.location.search.match(/fid=([0-9]+)/); currentSection = currentSection[currentSection.length - 1]; if (window.location.href.match(mt_config.rexp.post_forum)) { /* 发帖 */ console.log("发帖") selectNode.on("change", function () { let obj = $jq(this); let fid = obj.val(); let postSection = `forum.php?mod=post&action=newthread&fid=${fid}&extra=&topicsubmit=yes&mobile=2`; console.log("修改发帖板块: " + section_dict[fid] + " " + postSection); let classifyClassNameDict = { "求助问答": { "className": "gm_user_select_help", "optionHTML": `<option value="0" selected="selected">请选择</option> <option value="59">求助问答</option> <option value="58">已解决</option>` }, "建议反馈": { "className": "gm_user_select_feedback", "optionHTML": `<option value="0" selected="selected">请选择</option> <option value="62">BUG反馈</option> <option value="63">意见反馈</option> <option value="65">论坛问题</option> <option value="64">已解决</option>` }, "站务专区": { "className": "gm_user_select_depot", "optionHTML": `<option value="0" selected="selected">请选择</option> <option value="42">版主申请</option> <option value="43">职位调整</option>` } } if (classifyClassNameDict[section_dict[fid]]) { if ($jq(".comiis_post_from .styli_tit:contains('分类')").length) { $jq(".comiis_post_from .styli_tit:contains('分类')").parent().remove(); } $jq(".comiis_stylino.comiis_needmessage").before($jq(` <li class="comiis_styli comiis_flex b_b ${classifyClassNameDict[section_dict[fid]]["className"]}"> <div class="styli_tit f_c">分类</div> <div class="flex comiis_input_style"> <div class="comiis_login_select"> <span class="inner"> <i class="comiis_font f_d"></i> <span class="z"> <span class="comiis_question" id="typeid_name">请选择</span> </span> </span> <select id="typeid" name="typeid"> ${classifyClassNameDict[section_dict[fid]]["optionHTML"]} </select> </div> </div> </li> `)); } else { Object.keys(classifyClassNameDict).forEach(function (key) { $jq(".comiis_post_from ." + classifyClassNameDict[key]["className"]).remove(); }) } $jq('#postform').attr('action', postSection); }); } else { selectNode.attr("disabled", true); } selectNode.val(currentSection).trigger('change'); }, shieldPlate() { /* 屏蔽板块 */ if (window.location.href.match(mt_config.rexp.forum_guide_url)) { let infos = document.querySelectorAll(".comiis_forumlist .forumlist_li"); let black_list = GM_getValue("blacklistplate") || ""; let black_list_array = black_list.split("、"); Array.from(infos).forEach((info) => { let from_plate = (info.querySelector(".forumlist_li_time a.f_d") || info.querySelector(".comiis_xznalist_bk.cl")).outerText; from_plate = from_plate.replace(//g, ""); from_plate = from_plate.replace(/\s*/g, ""); from_plate = from_plate.replace("来自", ""); if (black_list_array.indexOf(from_plate) != -1) { console.log("屏蔽目标板块:" + from_plate); info.setAttribute("style", "display:none !important;"); } }) } }, shieldUser() { /* 屏蔽用户 */ if (window.location.href.match(mt_config.rexp.forum_guide_url) || window.location.href.match(mt_config.rexp.plate_url) || window.location.href.match(mt_config.rexp.forum_post)) { let infos = document.querySelectorAll(".comiis_forumlist .forumlist_li"); /* 帖子外 */ if (!infos.length) { /* 帖子内 */ infos = document.querySelectorAll(".comiis_postlist .comiis_postli"); if (!infos.length) { return; } } let black_list = GM_getValue("blacklistuid") ? GM_getValue("blacklistuid") : ""; let black_list_array = black_list.split(","); Array.from(infos).forEach((info) => { let usr = info.getElementsByClassName("wblist_tximg"); if (!usr.length) { usr = info.getElementsByClassName("postli_top_tximg"); if (!usr.length) { return; } } usr = usr[0].href; let usr_uid = usr.match(mt_config.rexp.mt_uid)[1]; if (black_list_array.indexOf(usr_uid) != -1) { console.log("屏蔽用户:" + usr_uid); info.setAttribute("style", "display:none !important;"); } }) } }, showSignInRanking() { /* 显示签到的最先几个人,最多10个,和顶部的今日签到之星 */ if (window.location.href.match(mt_config.rexp.k_misign_sign)) { let today_ranking_ele = document.querySelector(".comiis_topnv .comiis_flex .flex"); today_ranking_ele.after($jq(`<li class="flex"><a href="javascript:;" id="k_misignlist_today_latest" onclick="ajaxlist('todayLatest');">今日最先</a></li>`)[0]); let getMaxPage = (urlextra) => { return new Promise(res => { GM_xmlhttpRequest({ url: "https://bbs.binmt.cc/k_misign-sign.html?operation=" + urlextra, async: false, responseType: 'html', headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, onload: function (resp) { let last_page = $jq(resp.responseText).find("#J_list_detail .pg span"); if (last_page.length && typeof last_page[0].title != "undefined") { let last_page_match = last_page[0].title.match(/([0-9]+)/); if (last_page_match.length == 2) { res(last_page_match[last_page_match.length - 1]); } else { popup2.toast("获取页失败"); res(0); } } else { popup2.toast("请求最先签到的页失败"); res(0); } }, onerror: function (resp) { console.log(resp); popup2.toast("网络异常,请重新获取"); res(0); } }) }) } let getPagePeople = (page) => { return new Promise(res => { GM_xmlhttpRequest({ url: "https://bbs.binmt.cc/k_misign-sign.html?operation=list&op=&page=" + page, async: false, responseType: 'html', headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, onload: function (resp) { let peoples = $jq(resp.responseText).find("#J_list_detail tbody tr"); let ret_array = []; if (peoples.length == 2 && peoples[0].textContent.indexOf("暂无内容") != -1) { res(ret_array); return; } for (let i = 1; i <= peoples.length - 2; i++) { let people = peoples[i]; let ret_json = {}; let user_name = people.children[0].getElementsByTagName("a")[0].textContent; let space_url = people.children[0].getElementsByTagName("a")[0].href; let uid = space_url.match(/space-uid-([0-9]*)/)[1]; let sign_all_days = people.children[1].textContent; let sign_month_days = people.children[2].textContent; let sign_time = people.children[3].textContent; let sign_reward = people.children[5].textContent; ret_json["user"] = user_name; ret_json["uid"] = uid; ret_json["avatar"] = "https://avatar-bbs.mt2.cn/uc_server/avatar.php?uid=" + uid + "&size=small"; ret_json["days"] = sign_all_days; ret_json["monthDays"] = sign_month_days; ret_json["time"] = sign_time; ret_json["reward"] = sign_reward; ret_array = ret_array.concat(ret_json); } res(ret_array) }, onerror: function (resp) { console.log(resp); res({}); } }) }) } function changeRankList(data, listtype) { $jq("#ranklist").html(data); $jq('#ranklist').attr('listtype', listtype); } ajaxlist = async (listtype) => { listtype = listtype; if (listtype == 'today') { loadingdelay = false; urlextra = 'list&op=today'; } else if (listtype == 'month') { loadingdelay = false; urlextra = 'list&op=month'; } else if (listtype == 'zong') { loadingdelay = false; urlextra = 'list&op=zong'; } else if (listtype == 'calendar') { loadingdelay = true; urlextra = 'calendar'; } else { loadingdelay = false; urlextra = 'list'; } /* alert(loadingdelay); */ if (listtype == 'todayLatest') { loadingdelay = false; urlextra = 'list&op=&page=0'; let maxPage = await getMaxPage(urlextra); if (maxPage == 0) { return }; let latestPeople = await getPagePeople(maxPage); latestPeople.reverse(); if (latestPeople.length < 10) { let latestPeople_2 = await getPagePeople(maxPage - 1); latestPeople_2.reverse(); latestPeople = latestPeople.concat(latestPeople_2); latestPeople.reverse(); } let peopleHTML = ''; latestPeople.reverse(); console.log(latestPeople); latestPeople.forEach(people => { peopleHTML = peopleHTML + ` <tbody id="autolist_` + people["uid"] + `"> <tr> <td class="k_misign_lu"> <a href="home.php?mod=space&uid=` + people["uid"] + `"><img src="` + people["avatar"] + `"></a> </td> <td class="k_misign_ll"><span></span></td> <td class="k_misign_lc"> <h4 class="f_c"><a href="home.php?mod=space&uid=` + people["uid"] + `">` + people["user"] + `</a><span>` + people["time"] + `</span><span class="y">总天数 ` + people["days"] + `天</span></h4> <p class="f_0">月天数 ` + people["monthDays"] + ` 天 , 上次奖励 ` + people["reward"] + `</p> </td> </tr> </tbody> ` }) let latestHTML = `<li class="styli_h bg_e"></li> <div class="comiis_topnv bg_f b_t b_b"> <ul class="comiis_flex"> <li class="flex"><a href="javascript:;" id="k_misignlist_today" onclick="ajaxlist('today');">今日排行</a></li> <li class="flex f_0"><em class="bg_0"></em><a href="javascript:;" id="k_misignlist_today_latest" onclick="ajaxlist('todayLatest');">今日最先</a> </li> <li class="flex"><a href="javascript:;" id="k_misignlist_month" onclick="ajaxlist('month');" class="f_c">本月排行</a> </li> <li class="flex"><a href="javascript:;" id="k_misignlist_zong" onclick="ajaxlist('zong');" class="f_c">总排行</a></li> </ul> </div> <div class="k_misign_wp"> <div class="k_misign_list bg_f"> <table id="misign_list"> ` + peopleHTML + ` </table> </div> </div>` changeRankList(latestHTML, listtype) } else { $jq.ajax({ type: 'GET', url: "plugin.php?id=k_misign:sign&operation=" + urlextra, async: false, dataType: 'html', success: function (data) { /* console.log(data); */ data = data.replace(`今日排行</a></li>`, `今日排行</a></li><li class="flex"><a href="javascript:;" id="k_misignlist_today_latest" onclick="ajaxlist('todayLatest');">今日最先</a></li>`); changeRankList(data, listtype); }, complete: function (XHR, TS) { XHR = null } }); } } } }, showTodayStar() { /* 显示今日之星,在签到页上 */ if (GM_getValue("v33") && window.location.href.match(mt_config.rexp.k_misign_sign)) { let todayStarParent = $jq(".pg_k_misign .comiis_qdinfo"); let todayStar = document.createElement("ul"); GM_xmlhttpRequest({ url: "/k_misign-sign.html", method: 'get', async: false, headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, onload: (r) => { let html = $jq(r.responseText); let todatastarele = html.find("#pt span.xg1"); if (!todatastarele.length) { return; } let todaypeople = todatastarele[0].textContent.replace("今日签到之星:", ''); todayStar.innerHTML = '<li class="f_f" style="display: flex;flex-direction: column;width: 100%;"><span class="comiis_tm">今日签到之星</span>' + todaypeople + '</li>'; let comiis_space_box_height = getComputedStyle($jq(".comiis_space_box")[0], null)["height"].replace("px", ""); let comiis_space_box_padding_bottom = getComputedStyle($jq(".comiis_space_box")[0], null)["padding-bottom"].replace("px", ""); comiis_space_box_height = parseInt(comiis_space_box_height); comiis_space_box_padding_bottom = parseInt(comiis_space_box_padding_bottom); let total_height = comiis_space_box_height + comiis_space_box_padding_bottom + 50; GM_addStyle(` .comiis_space_box{ height: ${total_height}px; background-size: 100% 100%; } .pg_k_misign .comiis_qdinfo{ height: 110px !important; }`); todayStarParent.append(todayStar); }, onerror: (r) => { console.log(r); log.error("请求今日之星失败"); } }) } }, showUserUID() { /* 显示用户的uid */ if (GM_getValue("v15") && ((window.location.href.match(mt_config.rexp.forum_post_guide_url) || (window.location.href.match(mt_config.rexp.forum_post)) || (window.location.href.match(mt_config.rexp.plate_url)) || (window.location.href.match(mt_config.rexp.search_url)) || window.location.href.match(/bbs.binmt.cc\/home.php\?mod=space&do=thread&view=me/) || window.location.href.match(/home.php\?mod=space&uid=.+&do=thread&view=me/) ))) { if (!window.GM_isaddShowUidCss) { window.GM_isaddShowUidCss = true; GM_addStyle(` .postli_top_tximg + h2{ height: auto; } `); } window.findUserFormList = false; window.findUserFormListNums = 0; let findSetInval = setInterval(function () { let formList = mt_config.dom_obj.comiis_formlist() ? mt_config.dom_obj.comiis_formlist() : []; formList = formList.length == 0 ? mt_config.dom_obj.comiis_postli() : formList; formList = formList.length == 0 ? mt_config.dom_obj.comiis_mmlist() : formList; window.findUserFormList = formList.length ? true : false; if (findUserFormListNums >= 16) { console.log("已循环16次,未找到帖子"); clearInterval(findSetInval); } if (window.findUserFormList) { GM_addStyle(` .comiis_postli_top.bg_f.b_t h2{ height: auto; }`); function matchUIDByArray(data) { for (let i = 0; i < data.length; i++) { let url = data[i].href; let uid = url.match(mt_config.rexp.mt_uid); if (uid) { return uid[1]; } } return null } $jq.each(formList, (index, value) => { let mtUIDOM = value.getElementsByClassName("mt_uid_set"); if (!mtUIDOM.length) { let childrenByATagetElement = value.getElementsByTagName("a"); let mt_uid = null; mt_uid = matchUIDByArray(childrenByATagetElement); if (mt_uid != null) { let uid_control = document.createElement("a"); let mtUidDomInsertElement = value.getElementsByClassName("top_lev")[0]; let uid_control_height = getComputedStyle(mtUidDomInsertElement, null)["height"]; let uid_control_margin = getComputedStyle(mtUidDomInsertElement, null)["margin"]; let uid_control_padding = getComputedStyle(mtUidDomInsertElement, null)["padding"]; let uid_control_line_height = getComputedStyle(mtUidDomInsertElement, null)["line-height"]; let uid_control_font = getComputedStyle(mtUidDomInsertElement, null)["font"]; let uid_control_bg_color = "#FF7600"; uid_control.className = "mt_uid_set"; uid_control.style = ` font: ${uid_control_font}; background: ${uid_control_bg_color}; color: white; float: left; margin: ${uid_control_margin}; padding: ${uid_control_padding}; height: ${uid_control_height}; line-height: ${uid_control_line_height}; border-radius: 1.5px;`; uid_control.innerHTML = "UID:" + mt_uid; uid_control.onclick = function () { try { GM_setClipboard(mt_uid); popup2.toast(`${mt_uid}已复制`); console.log("复制:", mt_uid) } catch (err) { popup2.toast(`${mt_uid}复制失败`); console.log("复制失败:" + mt_uid, err); } } mtUidDomInsertElement.parentElement.append(uid_control); } } }) console.log("成功找到帖子DOM"); clearInterval(findSetInval); } else { findUserFormListNums += 1; } }, 800) } }, userCheckBoxSettings() { /* 侧边栏配置项 */ function checkboxNode() { return $jq(".whitesevcheckbox"); } function selectedNodeText() { let selectedVal = selectNode().val(); return $jq(`.beauty-select option[value='${selectedVal}']`).text(); } function selectNode() { return $jq(".beauty-select"); } function setCodeNodeCheckedStatus(status) { /* 设置 开关的状态 */ status ? checkboxNode().removeClass("comiis_checkbox_close") : checkboxNode().addClass("comiis_checkbox_close"); } function setLastClickItem() { /* 初始化设置上次点击的select内容 */ let selectNodeNormalVal = GM_getValue("last") == null ? "v2" : GM_getValue("last"); selectNode().val(selectNodeNormalVal); setCodeNodeCheckedStatus(GM_getValue(selectNodeNormalVal) != null ? true : false); } function setSelectNodeChangeEvent() { /* 设置选项的change事件 */ selectNode().change(function () { let selected_value = $jq('.beauty-select').val(); GM_setValue("last", selected_value); let check_value = GM_getValue(selected_value) != null ? true : false; setCodeNodeCheckedStatus(check_value); }); } function setCodeNodeClickEvent() { /* 设置开关的click事件 */ checkboxNode().on("click", (e) => { let selected_value = selectNode().val(); let check_value = GM_getValue(selected_value) != null ? false : true; check_value ? GM_setValue(selected_value, true) : GM_deleteValue(selected_value); let showText = check_value ? '设置-开启' : '设置-关闭'; popup2.toast(showText); setCodeNodeCheckedStatus(check_value); }) } function setSelectNodeCSS() { GM_addStyle(` .beauty-select{ background-color: #fff; height:28px; width: 160px; line-height:28px; border: 1px solid #ececec; background: url(w.png) no-repeat; background-position: 95% 50%; -webkit-appearance: none; /*去掉样式 for chrome*/ appearance:none;/*去掉样式*/ -moz-appearance:none;/*去掉样式*/ }`); } if (window.location.href.match(mt_config.rexp.bbs)) { var setting_content = document.createElement("li"); setting_content.className = "comiis_left_Touch"; setting_content.innerHTML = '<div class="styli_tit f_c"><i class="comiis_font" style="color: #a70bfe;font-size: 23px;"></i></div><div class="flex" style="display: flex;align-items: center;"><select style="vertical-align:top;border-color:transparent;font-size: 17px;font-weight: 300;text-overflow:ellipsis;white-space:nowrap;" class="beauty-select">' + '<option value="v2">识别链接<\/option>' + '<option value="v17">自动签到<\/option>' + '<option value="v18">自动展开帖子<\/option>' + '<option value="v16">自适应帖子内图片的宽度<\/option>' + '<option value="v15">显示用户的UID<\/option>' + '<option value="v19">显示搜索历史<\/option>' + '<option value="v1">移除帖子字体效果<\/option>' + '<option value="v3">移除评论区字体效果<\/option>' + '<option value="v6">评论区开启点评<\/option>' + '<option value="v32">自动加载上一页评论<\/option>' + '<option value="v21">自动加载下一页评论<\/option>' + '<option value="v30">小黑屋<\/option>' + '<option value="v33">今日签到之星<\/option>' + '<option value="v34">帖外预览图片<\/option>' + '<option value="v36">修复搜索的清空按钮<\/option>' + '<option value="v37">修复无法正确进入别人的空间<\/option>' + '<option value="v40">聊天内图床<\/option>' + '<option value="v44">付费主题白嫖提醒<\/option>' + '<option value="v45">页面小窗浏览帖子<\/option>' + '<option value="v46">代码块上方新增复制按钮<\/option>' + '<option value="v47">蓝奏云功能<\/option>' + '<option value="v49">编辑器优化-快捷<\/option>' + '<option value="v50">编辑器优化-完整<\/option>' + '<\/select>' + '<code class="bg_f b_ok comiis_checkbox comiis_checkbox_close whitesevcheckbox" style="left: 20px;"></code>' + '<\/div>'; /* Array.from(document.querySelectorAll(".comiis_myinfo_list.bg_f.cl")).forEach((ele) => { if (ele.innerText.match(/风格配色|夜间模式|最近访客|改名申请|手机绑定设置/)) { ele.appendChild(setting_content); return; } }) */ GM_addStyle(` .comiis_sidenv_box ul.comiis_left_Touch.bdew li:nth-last-child(1) { margin-bottom: 10px; } `); $jq(".comiis_sidenv_box .sidenv_li .comiis_left_Touch.bdew").append(setting_content); tryCatch(setSelectNodeCSS); tryCatch(setLastClickItem); tryCatch(setCodeNodeClickEvent); tryCatch(setSelectNodeChangeEvent); /* tryCatch(loadCheckboxTipResource); */ } }, } function Hooks() { /* hook?用不到 */ return { initEnv: function () { Function.prototype.hook = function (realFunc, hookFunc, context) { var _context = null; /* 函数上下文 */ var _funcName = null; /* 函数名 */ _context = context || window; _funcName = getFuncName(this); _context['realFunc_' + _funcName] = this; console.log(window); if (_context[_funcName].prototype && _context[_funcName].prototype.isHooked) { console.log("Already has been hooked,unhook first"); return false; } function getFuncName(fn) { /* 获取函数名 */ var strFunc = fn.toString(); var _regex = /function\s+(\w+)\s*\(/; var patten = strFunc.match(_regex); if (patten) { return patten[1]; }; return ''; } try { eval('_context[_funcName] = function ' + _funcName + '(){\n' + 'var args = Array.prototype.slice.call(arguments,0);\n' + 'var obj = this;\n' + 'hookFunc.apply(obj,args);\n' + "return _context['realFunc_" + _funcName + "'].apply(obj,args);\n" + '};'); _context[_funcName].prototype.isHooked = true; return true; } catch (e) { console.log("Hook failed,check the params."); return false; } } Function.prototype.unhook = function (realFunc, funcName, context) { var _context = null; var _funcName = null; _context = context || window; _funcName = funcName; if (!_context[_funcName].prototype.isHooked) { console.log("No function is hooked on"); return false; } _context[_funcName] = _context['realFunc' + _funcName]; delete _context['realFunc_' + _funcName]; return true; } }, cleanEnv: function () { if (Function.prototype.hasOwnProperty("hook")) { delete Function.prototype.hook; } if (Function.prototype.hasOwnProperty("unhook")) { delete Function.prototype.unhook; } return true; } }; } function entrance() { /* 这是入口 */ var UA = navigator.userAgent.match(mt_config.rexp.pc_useragent); if (UA != null) { tryCatch(pc.repairPCNoLoadResource); $jq(document).ready(function () { tryCatch(pc.main); }); } else { $jq(document).ready(function () { tryCatch(mobile.main); }) } }; if (envCheck()) { $jq(document).ready(function () { entrance(); console.log(`执行完毕,耗时${Date.now()-mt_config.GMRunStartTime}ms`); }); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址