您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为135、96、365编辑器去除广告,免vip,增加css样式编辑面板等...
// ==UserScript== // @name 微信编辑器增强🧬 // @namespace http://tampermonkey.net/ // @match *://www.135editor.com/* // @match *://bj.96weixin.com/* // @match *://www.365editor.com/* // @match *://mp.weixin.qq.com/* // @icon https://www.135editor.com/img/vip/vip.png // @require https://cdn.jsdelivr.net/npm/[email protected]/jscolor.min.js // @grant GM_addStyle // @version 2.0.1 // @author ec50n9 // @description 为135、96、365编辑器去除广告,免vip,增加css样式编辑面板等... // @license MIT // ==/UserScript== (() => { "use strict"; function e(e, n, t, i) { let o, d, r, l, a, c = 0, s = 0, f = 0; switch ( (n < 0 && (n = 0), n > 1 && (n = 1), t < 0 && (t = 0), t > 1 && (t = 1), (e %= 360) < 0 && (e += 360), (e /= 60), (o = Math.floor(e)), (d = e - o), (r = t * (1 - n)), (l = t * (1 - n * d)), (a = t * (1 - n * (1 - d))), o) ) { case 0: (c = t), (s = a), (f = r); break; case 1: (c = l), (s = t), (f = r); break; case 2: (c = r), (s = t), (f = a); break; case 3: (c = r), (s = l), (f = t); break; case 4: (c = a), (s = r), (f = t); break; case 5: (c = t), (s = r), (f = l); } return i && i < 1 ? "rgba(" + Math.round(255 * c) + ", " + Math.round(255 * s) + ", " + Math.round(255 * f) + ", " + i + ")" : "rgb(" + Math.round(255 * c) + ", " + Math.round(255 * s) + ", " + Math.round(255 * f) + ")"; } function n(e, n, t, i) { (e /= 255), (n /= 255), (t /= 255); const o = Math.max(e, n, t), d = o - Math.min(e, n, t); let r = o, l = 0 === r ? 0 : d / r, a = 0; return ( e === r && (a = (60 * (n - t)) / d), n === r && (a = 120 + (60 * (t - e)) / d), t === r && (a = 240 + (60 * (e - n)) / d), 0 === d && (a = 0), a < 0 && (a += 360), (a = a / 2 / 180), (a = Number(a.toFixed(4))), (l = Number(l.toFixed(4))), (r = Number(r.toFixed(4))), [a, l, r, i] ); } const t = function (e, n) { (n || $("head")).append($(`<style>${e}</style>`)); }, i = function (e, n) { const i = $("body"), o = $("#ueditor_0"); if ( (t( ".ective{outline: 1.5px dashed red !important; outline-offset: 2px; position: relative;}", o.contents().find("head") ), i.hasClass("running")) ) if ( (e.fadeOut(200), o.contents().find("body").unbind(), i.removeClass("running"), o.contents().find("body .ective").removeClass("ective"), n) ) n(!1); else { const e = i.find("#ec-change"); (e.length ? e : i) .css({ "background-color": "#e8b004" }) .text("编辑进化"); } else if ( (e.fadeIn(200), o .contents() .find("body") .on( "click", (function (e) { const n = e.find("#ec_path_list"), t = e.find("#ec_win_style"), i = e.find("#ec_win_input_style"), o = e.find("#ec_win_add_style"), d = e.find("#ec_win_attr"), r = e.find("#ec_child_list"), l = e.find("#ec_win_html"), a = e.find("#ec_win_delete"), c = e.find("#ec_win_parent"), s = e.find("#ec_win_write"); return function (e) { const f = $(e.target); $("#ueditor_0") .contents() .find("body .ective") .removeClass("ective"), f.addClass("ective"), n.html(""), t.html(""), d.html(""), l.val(""), o.unbind(), r.html(""), s.unbind(), c.unbind(), a.unbind(), f.each(function () { f .parents() .filter("body *") .each(function () { let e = $( `<li><a style="color:#ff793f;" href="javascript:;">${this.tagName}</a></li>` ); n.prepend(e); let t = $(this); e.find("a").bind("click", function () { t.click(); }); }), n.append(`<li>[ ${this.tagName} ]</li>`), $.each(this.attributes, function () { if (this.specified) if ("style" === this.name) { let e = this.value.split(";"); for (let n = 0; n < e.length; n++) { let i = e[n]; if (i) { let e = i.split(":"), n = i.slice(i.indexOf(":") + 1).trim(), o = $( `<tr ec-attr="${e[0]}"><th>${ e[0] }</th><td><input type="${ (n.match(/^#[a-f0-9]{3,6}$/i), "text") }" value="${n}" style="border:2px solid #eee;padding:0 8px; border-radius:2px;"></td></tr>` ); t.append(o); } } } else { let e = $( `<tr ec-attr="${this.name}"><th>${this.name}</th><td><input type="text" value="${this.value}" style="border:2px solid #eee;padding:0 8px; border-radius:2px;"></td></tr>` ); d.append(e); } }); }); const p = function (e, n, t) { const i = $( '<ul style="list-style-type:circle; margin-left:2em;"></ul>' ); n.children().each(function () { let e = $( `<li><a style="color:#ff793f;" href="javascript:;">${this.tagName}</a></li>` ), n = $(this); e.find("a").bind("click", function () { return n.click(), !1; }), i.append(e), p(i, n, e); }), i.html() && (e.append(i), t && t .css("list-style-type", "disc") .on("click", function () { i.slideToggle(200); })); }; function u(e) { let n = t.find("tr"), i = ""; for (let e = 0; e < n.length; e++) { let t = $(n[e]); t.find("input").val() && (i = i + t.attr("ec-attr") + ":" + t.find("input").val() + ";"); } e.attr("style", i); } return ( p(r, f), l.val(f.html()), o.bind("click", function () { let e = (i.val() || "").toString(); if (e) { let n = e.split(":"); t.append( `<tr ec-attr="${n[0]}"><th>${ n[0] }</th><td><input type="text" value="${ n.length > 1 ? n[1].replace(";", "") : "" }" style="border:2px solid #eee;padding:0 8px; border-radius:2px;"></td></tr>` ), i.val(""); } u(f); }), s.bind("click", function () { u(f); let e = d.find("tr"); for (let n = 0; n < e.length; n++) { let t = $(e[n]); f.attr(t.attr("ec-attr"), t.find("input").val()); } f.html((l.val() || "").toString()); }), c.on("click", function () { f.parent().click(); }), a.on("click", function () { let e = f.parent(); f.remove(), e.click(); }), !1 ); }; })(e) ), i.addClass("running"), n) ) n(!0); else { const e = i.find("#ec-change"); (e.length ? e : i) .css({ "background-color": "#20a162" }) .text("解除进化"); } }; console.log("--- inject ---"), GM_addStyle( '#ec_window {\n display: flex;\n flex-direction: column;\n position: fixed;\n top: 5%;\n left: 25%;\n width: 24em;\n max-height: 90%;\n background-color: #fff;\n box-shadow: rgba(9, 30, 66, 0.25) 0px 4px 8px -2px,\n rgba(9, 30, 66, 0.08) 0px 0px 0px 1px;\n border-radius: 1em;\n overflow: hidden;\n z-index: 999;\n font-family: PingFangSC-Regular, "Georgia Pro", Georgia, Times,\n "Times New Roman", sans-serif;\n}\n#ec_path_list {\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n text-transform: lowercase;\n}\n#ec_path_list li:nth-child(n + 2)::before {\n content: ">";\n margin: 0 0.5em;\n}\n#ec_win_style th,\n#ec_win_attr th {\n width: 40%;\n border-width: 1px;\n font-weight: 500;\n}\n.header {\n position: relative;\n padding: 0.2rem 0;\n color: #000;\n font-weight: 700;\n background-color: #fff;\n cursor: move;\n user-select: none;\n}\n.header__title {\n text-align: center;\n}\n.header__btns-wrapper {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-40%);\n}\n.header__btn {\n display: inline-block;\n width: 0.9em;\n height: 0.9em;\n margin-left: 0.5em;\n background-color: #fff;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n}\n#ec_win_close {\n background-color: rgb(239, 68, 68);\n}\n#ec_win_mini {\n background-color: rgb(245, 158, 11);\n}\n.tab-wrapper {\n display: flex;\n flex-direction: row;\n}\n.tab {\n flex-grow: 1;\n color: rgb(107, 114, 128);\n font-size: 0.9rem;\n padding: 0.2rem 0;\n margin: 0.3rem;\n text-align: center;\n border-radius: 0.5rem;\n cursor: pointer;\n}\n.tab--active {\n color: #fff;\n font-weight: 700;\n background-color: rgb(16, 185, 129);\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n}\n#ec_panel_wrapper {\n display: flex;\n overflow: hidden;\n}\n#ec_panel_element {\n display: flex;\n width: 100%;\n flex-direction: column;\n margin: 1em;\n overflow: hidden;\n}\n#ec_win_html {\n width: 100%;\n resize: none;\n box-sizing: border-box;\n}\n\n#ec_panel_color,\n#ec_panel_template {\n width: 100%;\n margin: 2em;\n}\n\n#color_picker {\n width: 100%;\n display: flex;\n flex-direction: column;\n}\n#color_color {\n position: relative;\n width: 100%;\n height: 10em;\n background-color: rgb(255, 0, 0);\n}\n#color_sat {\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));\n}\n#color_val {\n width: 100%;\n height: 100%;\n background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));\n}\n#color_dragger {\n position: absolute;\n top: 0;\n left: 0;\n width: 1em;\n height: 1em;\n transform: translate(-50%, -50%);\n border-radius: 50%;\n background-color: #fff;\n border: 2px solid #000;\n}\n#color_h {\n position: relative;\n width: 100%;\n height: 1em;\n margin: 0.5em 0;\n background: -webkit-linear-gradient(\n left,\n #ff0000 0%,\n #ffff00 17%,\n #00ff00 33%,\n #00ffff 50%,\n #0000ff 67%,\n #ff00ff 83%,\n #ff0000 100%\n );\n}\n#color_alpha {\n position: relative;\n width: 100%;\n height: 1em;\n margin: 0.5em 0;\n background-image: url(https://s1.ax1x.com/2022/04/17/LN6aCR.png);\n}\n#color_h_dragger,\n#color_alpha_dragger {\n position: absolute;\n top: -10%;\n left: 100%;\n width: 0.5em;\n height: 120%;\n transform: translateX(-50%);\n background-color: #d1d5db;\n}\n#color_alpha_inner {\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0)\n linear-gradient(to right, rgba(255, 0, 0, 0), rgb(255, 0, 0)) repeat scroll\n 0% 0%;\n}\n#color_preview_wrapper {\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n margin: 1em 0;\n}\n#color_preview {\n width: 2em;\n height: 2em;\n background-color: rgb(0, 0, 0);\n border: 2px solid #eee;\n}\n#color_preview_text {\n flex-grow: 1;\n width: 1em;\n margin-left: 1em;\n border: 2px solid #eee;\n padding: 0.1em 0.5em;\n border-radius: 0.5em;\n}\n#color_copy {\n align-self: flex-end;\n padding: 0.2em 0.8em;\n border-radius: 0.4em;\n border: 2px solid #eee;\n color: #fff;\n background-color: #3b82f6;\n}\n' ); let o = $( '<div id="ec_window">\n <div id="ec_header" class="header">\n <div class="header__title truncate">编辑面板</div>\n <div class="header__btns-wrapper">\n <div id="ec_win_close" class="header__btn"></div>\n <div id="ec_win_mini" class="header__btn"></div>\n </div>\n </div>\n <div id="ec_tabs" class="tab-wrapper">\n <div id="ec_tab_element" class="tab tab--active">元素</div>\n <div id="ec_tab_color" class="tab">色板</div>\n <div id="ec_tab_template" class="tab">模板</div>\n </div>\n <div id="ec_panel_wrapper">\n <div id="ec_panel_element" class="ec_panel">\n <div id="ec_path_list"></div>\n <div style="display:flex; flex-direction:column; overflow-y:scroll;">\n <h2 style="margin-top:1em; font-weight:600">当前元素样式</h2>\n <table id="ec_win_style"></table>\n <div style="display:flex; align-items:center; margin-top:.5em">\n <input id="ec_win_input_style" type="text" value="" placeholder="例: color: red;"\n style="flex-grow:1; border:2px solid #eee;padding:0 8px; border-radius:2px;">\n <button id="ec_win_add_style"\n style="min-width:5em; margin-left:1em; padding:.2em .8em; border-radius:.4em; border:2px solid #eee; color:#fff; background-color:#3B82F6;">添加样式</button>\n </div>\n <div style="display:none; margin-top:.8em; color:#999; font-size:.8em;">\n 每次只能添加<strong>一条</strong>样式。<br>\n 添加样式后需要点击下方<strong>写入</strong>才可生效。<br>\n 清空编辑框后点击<strong>写入</strong>即可删除该行样式。\n </div>\n <h2 style="margin-top:1em; font-weight:600">属性</h2>\n <table id="ec_win_attr"></table>\n <h2 style="margin-top:1em; font-weight:600">子元素</h2>\n <ul id="ec_child_list" style="margin:0;">\n </ul>\n <h2 style="margin-top:1em; font-weight:600">内容</h2>\n <div style="width:100%">\n <textarea id="ec_win_html" rows="5"\n style="width:100%; border:2px solid #eee; padding:0 8px; border-radius:2px;">元素文本</textarea>\n </div>\n </div>\n <div style="display:flex; flex-direction: row; align-items: center; justify-content: right;">\n <button id="ec_win_delete"\n style="align-self:flex-end; padding:.2em .8em; border-radius:.4em; border:2px solid #eee; color:#fff; background-color:#B91C1C;">删除元素</button>\n <button id="ec_win_parent"\n style="align-self:flex-end; padding:.2em .8em; border-radius:.4em; border:2px solid #eee; color:#fff; background-color:#F59E0B;">父容器</button>\n <button id="ec_win_write"\n style="align-self:flex-end; padding:.2em .8em; border-radius:.4em; border:2px solid #eee; color:#fff; background-color:#3B82F6;">更新写入</button>\n </div>\n </div>\n <div id="ec_panel_color" class="ec_panel">\n <h2>调色板</h2>\n <div id="color_picker">\n <div id="color_color">\n <div id="color_sat">\n <div id="color_val">\n <div id="color_dragger"></div>\n </div>\n </div>\n </div>\n <div id="color_h">\n <div id="color_h_dragger"></div>\n </div>\n <div id="color_alpha">\n <div id="color_alpha_inner">\n <div id="color_alpha_dragger"></div>\n </div>\n </div>\n <div id="color_preview_wrapper">\n <div id="color_preview"></div>\n <input id="color_preview_text" type="text" placeholder="点击色板以选择颜色值">\n </div>\n <button id="color_copy">复制颜色值</button>\n </div>\n </div>\n <div id="ec_panel_template" class="ec_panel">\n <h2>开发中。。。</h2>\n </div>\n </div>\n</div>' ).hide(); const d = o.find("#ec_header"), r = (o.find("#ec_win_close"), o.find("#ec_win_mini")), l = o.find("#ec_tabs"), a = o.find("#ec_tab_element"), c = o.find("#ec_tab_color"), s = o.find("#ec_tab_template"), f = o.find("#ec_panel_wrapper"), p = o.find("#ec_panel_element"), u = o.find("#ec_panel_color").hide(), h = o.find("#ec_panel_template").hide(); r.click(function () { l.toggle(), f.toggle(); }), a.click(function () { console.log("gogo:", o.find(".tab--active")), o.find(".tab--active").removeClass("tab--active"), a.addClass("tab--active"), o.find(".ec_panel:not(#ec_panel_element)").hide(), p.show(); }), c.click(function () { o.find(".tab--active").removeClass("tab--active"), c.addClass("tab--active"), o.find(".ec_panel:not(#ec_panel_color)").hide(), u.show(); }), s.click(function () { o.find(".tab--active").removeClass("tab--active"), s.addClass("tab--active"), o.find(".ec_panel:not(#ec_panel_template)").hide(), h.show(); }), (function (t) { const i = t.find("#color_color"), o = t.find("#color_dragger"), d = t.find("#color_h"), r = t.find("#color_h_dragger"), l = t.find("#color_alpha"), a = t.find("#color_alpha_dragger"), c = t.find("#color_preview"), s = t.find("#color_preview_text"), f = t.find("#color_copy"); let p = 0, u = 0, h = 0, g = 1; function b() { const n = e(p, u, h, g); c.css("background-color", n), s.val(n); } function _(e, n) { e.mousedown(function (i) { let o = i.pageX - e.offset().left, d = i.pageY - e.offset().top; return ( n(o, d), t.mousemove(function (t) { (o = t.pageX - e.offset().left), (d = t.pageY - e.offset().top), n(o, d); }), t.mouseup(function (e) { t.off("mousemove"), t.off("mouseup"); }), t.mouseleave(function (e) { t.off("mousemove"), t.off("mouseup"); }), !1 ); }); } s.change(function () { const t = s.val().trim(); let c; if (t.match(/^#[a-f0-9]{3,8}$/i)) { const { red: e, green: i, blue: o, alpha: d, } = (function (e) { let n = e.substring(1), t = 1; return ( n.length < 6 ? (n = (function (e, n) { let t = ""; for (let n of e) t += i(n, 2); return t; })(n)) : 8 == n.length && ((t = ("0x" + n) & "0xff"), (t = Number(((t / 255) * 1).toFixed(2))), (n = n.substring(0, 6))), (n = "0x" + n), { red: n >> 16, green: (n >> 8) & "0xff", blue: "0xff" & n, alpha: t, } ); function i(e, n) { let t = ""; for (let i = 0; i < n; i++) t += e; return t; } })(t); (c = n(e, i, o, d)), b(); } else if (t.match(/^rgba\(.+?\)$/i)) { const e = t .replace(/\s+/g, "") .match(/^rgba\(([0-9]+),([0-9]+),([0-9]+),([0-9.]+)\)$/i); c = n(e[1], e[2], e[3], e[4]); } else { if (!t.match(/^rgb\(.+?\)$/i)) return; { const e = t .replace(/\s+/g, "") .match(/^rgb\(([0-9]+),([0-9]+),([0-9]+)\)$/i); c = n(e[1], e[2], e[3], 1); } } (p = 360 * c[0]), (u = c[1]), (h = c[2]), (g = c[3]), i.css("background-color", e(p, 1, 1, 1)), o.css({ left: u * i.width() + "px", top: i.height() - h * i.height(), }), r.css({ left: (p * d.width()) / 360 }), a.css({ left: g * l.width() }), b(); }), f.click(function (e) { console.log("hello"), s.select(), document.execCommand("Copy"); }), _(i, function (e, n) { e < 0 && (e = 0), e > i.width() && (e = i.width()), n < 0 && (n = 0), n > i.height() && (n = i.height()), o.css({ left: e + "px", top: n + "px" }), (u = e / i.width()), (h = (i.height() - n) / i.height()), b(); }), _(d, function (n) { n < 0 && (n = 0), n > d.width() && (n = d.width()), r.css({ left: n + "px" }), (p = ~~((n / d.width()) * 360)), i.css("background-color", e(p, 1, 1, 1)), b(); }), _(l, function (e) { e < 0 && (e = 0), e > l.width() && (e = l.width()), a.css({ left: e + "px" }), (g = Number((e / l.width()).toFixed(2))), b(); }); })(o), $(function () { $("body").append(o), (function (e, n) { e.mousedown(function (e) { var t = n.offset(), i = e.pageX - t.left, o = e.pageY - t.top; return ( $(document).mousemove(function (e) { var t = e.pageX - i, d = e.pageY - o; t < 0 ? (t = 0) : t > $(document).width() - n.outerWidth(!0) && (t = $(document).width() - n.outerWidth(!0)), d < 0 ? (d = 0) : d > $(document).height() - n.outerHeight(!0) && (d = $(document).height() - n.outerHeight(!0)), n.css({ left: t + "px", top: d + "px" }); }), $(document).mouseup(function () { $(document).off("mousemove"); }), !1 ); }); })(d, o), t("#ec-change{color:#fff; background-color:#e8b004;}"), (function (e) { const n = window.location.host; n.search(/www.135editor.com/) >= 0 ? (function (e) { setInterval(() => { let e = $("#editor-template-scroll li"); for (let n = 0, t = e.length; n < t; n++) e[n].classList.remove("vip-style"); $(".vip-flag").remove(), $(".user-unread-msgnum").hide(); try { articleManager.setVIP(!0); } catch (e) {} }, 1e3), (unsafeWindow.style_click = unsafeWindow.show_role_vip_dialog = function () { console.log("hey!"); }), (style_click = show_role_vip_dialog = function () {}), $("#add_xiaoshi").hide(), $( ".category-nav.editor-nav>.nav-item:nth-last-child(-n+2)" ).hide(), $( "#fixed-side-bar li:not(#function-settings), #fixed-bar-pack-up" ).hide(); let n = $( '<li style="margin-bottom: 20px;"><a href="javascript:;" id="ec-change" class="btn btn-default btn-xs" title="绑定监听器">编辑进化</a></li>' ).on("click", () => i(e)); $("#operate-tool").prepend(n); let t = $( '<li><a href="javascript:;" class="btn btn-default btn-xs" title="打开色板">开关色板</a></li>' ).on("click", function () { $("#color-plan").fadeToggle(300); }); $("#operate-tool").prepend(t); })(e) : n.search(/bj.96weixin.com/) >= 0 ? (function (e) { setInterval(() => { $(".rich_media_content").attr("data-vip", 1); }, 1e3); let n = $( '<button type="button" id="ec-change" class="layui-btn layui-btn-primary">编辑进化</button>' ).on("click", () => i(e)); $(".button-tools").prepend(n); })(e) : n.search(/www.365editor.com/) >= 0 ? (function (e) { let n = $( '<li id="ec-change" data-act="import"><span>编辑进化</span></li>' ).on("click", () => i(e)); $(".m-tools").prepend(n); })(e) : n.search(/mp.weixin.qq.com/) >= 0 && (function (e) { t("#ec-change {\n border-radius: 4px;\n}\n"); const n = $( '<div id="edui201" class="edui-box edui-separator edui-default"></div>' ), o = $( '<div id="ec-change" class="edui-box edui-splitbutton edui-for-inserttable edui-default">\n <div data-tooltip="编辑进化" id="edui202_state">\n <div class="edui-splitbutton-body edui-default">\n <div id="edui202_button_body" class="edui-box edui-button-body edui-default">\n <div class="edui-box edui-default" style="font-size: 1rem;">🧬</div>\n </div>\n <div class="edui-box edui-splitborder edui-default"></div>\n <div class="edui-box edui-arrow edui-default" onclick="$EDITORUI["edui202"]._onArrowClick();"></div>\n </div>\n </div>\n</div>' ).on("click", () => i(e, (e) => { e ? o.css({ "background-color": "#20a162" }) : o.css({ "background-color": "#e8b004" }); }) ); $("#js_toolbar_0").append(n).append(o); })(e); })(o); }), console.log("--- inject end ---"); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址