您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
发帖ubb、回帖表情等功能
// ==UserScript== // @name 妖火网辅助插件 // @namespace https://yaohuo.me/ // @version 2.1 // @description 发帖ubb、回帖表情等功能 // @author ID12167 // @match *yaohuo.me/* // @icon https://yaohuo.me/css/favicon.ico // @license MIT // @run-at document-end // ==/UserScript== //定义一些常量 const viewPage = ["/bbs/book_re.aspx", "/bbs/book_view.aspx"]; const postPage = ["/bbs/book_view_add.aspx", "/bbs/book_view_sendmoney.aspx", "/bbs/book_view_addvote.aspx", "/bbs/book_view_addfile.aspx", "/bbs/book_view_mod.aspx"]; //原表情包预览 const faceList = ['踩.gif', '狂踩.gif', '淡定.gif', '囧.gif', '不要.gif', '重拳出击.gif', '砳砳.gif', '滑稽砳砳.gif', '沙发.gif', '汗.gif', '亲亲.gif', '太开心.gif', '酷.gif', '思考.gif', '发呆.gif', '得瑟.gif', '哈哈.gif', '泪流满面.gif', '放电.gif', '困.gif', '超人.gif', '害羞.gif', '呃.gif', '哇哦.gif', '要死了.gif', '谢谢.gif', '抓狂.gif', '无奈.gif', '不好笑.gif', '呦呵.gif', '感动.gif', '喜欢.gif', '疑问.gif', '委屈.gif', '你不行.gif', '流口水.gif', '潜水.gif', '咒骂.gif', '耶耶.gif', '被揍.gif', '抱走.gif']; const spanstyle = 'color: #fff; padding: 2px 4px; font-size: 14px; background-color: #ccc; display:none;border-radius: 10%;'; const a1style = 'color: #fff; padding: 2px 4px; font-size: 14px; background-color: #66ccff;border-radius: 10%;'; const a2style = 'color: #fff; padding: 2px 4px; font-size: 14px; background-color: #d19275; border-radius: 10%; text-align: center;'; const a3style = 'color: #fff; padding: 2px 4px; font-size: 14px; background-color: #66ccff;float: right;border-radius: 20%;font-weight: bold;margin-right: 5px;'; const bt4style = 'margin-bottom:10px; margin-top:10px;'; // 一键删除 const url = window.location.href; const shouldExecute = url.includes("siteid") && url.includes("classid") && url.includes("key") && url.includes("type"); const isSearchAction = !url.endsWith("action=search"); if (shouldExecute && isSearchAction) { const listData = document.querySelectorAll(".listdata"); const deleteStyle = "padding: 0px 4px; font-size: 14px; border-radius: 10%; font-weight: bold; color: #fff; background: #ff8080; display: none; margin-bottom: -10px;"; const toggleDeleteButton = document.createElement("input"); toggleDeleteButton.type = "button"; toggleDeleteButton.value = "打开一键删除"; toggleDeleteButton.style.cssText = "padding: 2px 4px; font-size: 14px; background-color: #66ccff; border-radius: 10%; color: #fff; margin-left: auto;"; const titleDiv = document.querySelector(".title"); titleDiv.style.display = "flex"; titleDiv.style.justifyContent = "space-between"; titleDiv.appendChild(toggleDeleteButton); listData.forEach((data, index) => { const deleteSpan = document.createElement("span"); deleteSpan.textContent = `删除${"①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮"[index]}`; deleteSpan.style.cssText = deleteStyle; data.appendChild(deleteSpan); deleteSpan.addEventListener("click", () => { const link = data.querySelector("a:nth-of-type(2)"); const href = link.getAttribute("href"); const pattern = /classid=(\d+).*id=(\d+)/; const match = pattern.exec(href); const classid = match[1]; const id = match[2]; window.location.href = `https://yaohuo.me/bbs/book_view_del.aspx?action=godel&id=${id}&siteid=1000&classid=${classid}&lpage=1`; }); }); toggleDeleteButton.addEventListener("click", toggleDelete); function toggleDelete() { const deleteSpans = document.querySelectorAll(".listdata span:not(.right)"); const isOpen = toggleDeleteButton.value === "打开一键删除"; deleteSpans.forEach(span => { span.style.display = isOpen ? "inline-block" : "none"; }); toggleDeleteButton.value = isOpen ? "关闭一键删除" : "打开一键删除"; } } if (/^\/bbs-.*\.html$/.test(window.location.pathname) || viewPage.includes(window.location.pathname)) { const form = document.getElementsByName('f')[0]; const face = form.getElementsByTagName('select')[0]; const sendmsg = form.getElementsByTagName('select')[1]; sendmsg.insertAdjacentHTML('afterend', '<span style="' + a1style + '" id="unfold">表情展开</span>' + '<span id="facelong"></span>'); let unfold = document.getElementById('unfold'); let spread = false; unfold.onclick = function unfoldFace() { let facehtml = ''; if (!spread) { spread = true; faceList.forEach((faceStr, i) => { facehtml += '<img id="setFace' + i + '" style="width: 32px; height: 32px" src="face/' + faceStr + '" value="' + faceStr.split('.')[0] + '.gif"></img>'; }); facelong.insertAdjacentHTML('beforebegin', '<div id="facearea">' + facehtml + '</div>'); const facearea = document.getElementById('facearea'); for (let i = 0; i < faceList.length; i++) { document.getElementById('setFace' + i).onclick = function setFace() { face.value = faceList[i]; form.removeChild(facearea); spread = false; }; } } else { spread = false; form.removeChild(document.getElementById('facearea')); } }; // 妖火图床、超链接、图片 form.removeChild(form.lastChild); form.insertAdjacentHTML( "beforeend", ` <span id='ubb_znhf' type="submit" style="${a3style};">一键回复</span> <select name="diyface" style='background-color: #fffafa;float: right;font-weight: bold;font-size: 15px;margin-top: 5px;margin-right: 10px;'> <option name="1" value="">选择表情</option> <option id="ubb_jw" value="ubb_jw">稽舞</option> <option id="ubb_sj" value="ubb_sj">色稽</option> <option id="ubb_nn" value="ubb_nn">扭扭</option> <option id="ubb_jy" value="ubb_jy">摸鱼</option> <option id="ubb_pt" value="ubb_pt">拍头</option> <option id="ubb_jg" value="ubb_jg">稽狗</option> <option id="ubb_sq" value="ubb_sq">手枪</option> <option id="ubb_dq" value="ubb_dq">打拳</option> <option id="ubb_tp" value="ubb_tp">躺平</option> <option id="ubb_jj" value="ubb_jj">撒娇</option> <option id="ubb_mq" value="ubb_mq">没钱</option> <option id="ubb_tg" value="ubb_tg">听歌</option> <option id="ubb_nt" value="ubb_nt">男同</option> <option id="ubb_gj" value="ubb_gj">跪稽</option> <option id="ubb_qy" value="ubb_qt">乞讨</option> <option id="ubb_gz" value="ubb_gz">鼓掌</option> <option id="ubb_sw" value="ubb_sw">骚舞</option> <option id="ubb_bs" value="ubb_bs">鄙视</option> <option id="ubb_cs" value="ubb_cs">吃屎</option> <option id="ubb_tt" value="ubb_tt">踢腿</option> <option id="ubb_st" value="ubb_st">伸头</option> <option id="ubb_zj" value="ubb_zj">追稽</option> <option id="ubb_lsj" value="ubb_lsj">司稽</option> <option id="ubb_dn" value="ubb_dn">刀你</option> <option id="ubb_cc" value="ubb_dp">冲刺</option> <option id="ubb_zq" value="ubb_zq">转圈</option> <option id="ubb_cj" value="ubb_cj">吃稽</option> <option id="ubb_fj" value="ubb_fj">犯贱</option> <option id="ubb_nb" value="ubb_nb">牛掰</option> <option id="ubb_yb" value="ubb_yb">拥抱</option> </select> <br><center><a id='ubb_nzgsa' style="${a2style}">你真该死啊</a> <a id='ubb_hr' style="${a2style}">分割线</a> <a id='ubb_jz' style="${a2style}; display: none;">居左</a> <a id='ubb_hhf' style="${a2style}">换行符</a> <a id='ubb_jyo' style="${a2style}; display: none;">居右</span> <a id='ubb_url' style="${a1style}">超链</a> <a id='ubb_img' style="${a1style}">图片</a> <a href='https://www.yaohuo.me/tuchuang/' target="_blank" style="${a1style}">图床</a> <a href='https://img.ink/' target="_blank" style="${a1style}">水墨图床</a> </a> ` ); //选择表情后自动点击评论区调出输入法 var selectElem = document.querySelector('[name="diyface"]'); selectElem.addEventListener('change', function () { var selectedValue = this.value; if (selectedValue !== '') { var textareaElem = document.querySelector('[name="content"]'); textareaElem.focus(); } }); //监测select选项的变化 var textareaname = document.querySelector('[name="content"]'); var selectElement = document.querySelector('[name="diyface"]'); var lastValue = ""; selectElement.addEventListener('change', function() { var selectedOption = selectElement.selectedOptions[0]; var selectedValue = "[" + selectedOption.value + "]"; // 在选项值前后添加中括号 // 将上一次插入的值用空字符串替换掉 textareaname.value = textareaname.value.replace(lastValue, ""); // 记录本次插入的值 lastValue = selectedValue; }); // 超链接 const textarea = document.querySelector( "body > div.sticky > form > textarea" ); //diy表情包 const quickReplyBtn = document.querySelector("input[name='g']"); document.getElementById("ubb_znhf").addEventListener("click", (e) => { e.preventDefault(); const textarea = document.querySelector("textarea[name='content']"); //返回值匹配表情包ID if (textarea.value !== "") { // 获取所选UBB代码 const selectedValue = document.querySelector("select[name='diyface']").value; //把光标移到文本框最前面 textarea.focus(); textarea.setSelectionRange(0, 0); // 根据所选UBB代码插入不同的表情包 if (selectedValue === "ubb_jy") { insertText(textarea, "[img]http://static2.51gonggui.com/FhBfMfl4sGC3QJVTMaLqEKkE90Ia#.gif[/img]", 0); } else if (selectedValue === "ubb_jw") { insertText(textarea, "[img=46,70]http://static2.51gonggui.com/FmNyrjU8Wq0m3PiwHQJwDhHdv-EJ#.gif[/img]", 0); } else if (selectedValue === "ubb_sj") { insertText(textarea, "[img]http://static2.51gonggui.com/FoKvdu89eiq0q-24IfOM2mFB0vIq#.gif[/img]", 0); } else if (selectedValue === "ubb_dq") { insertText(textarea, "[img=70,70]https://pic.ziyuan.wang/2023/10/10/Mayun_4a977157e17fa.gif[/img]", 0); } else if (selectedValue === "ubb_jj") { insertText(textarea, "[img=57,70]http://static2.51gonggui.com/FrZ6GDJiOAz3pp4e5_8uSShSXXXk#.gif[/img]", 0); } else if (selectedValue === "ubb_jg") { insertText(textarea, "[img=70,70]http://static2.51gonggui.com/FiZiSSyXSa8eCzwOXmIfOOpfA_7a#.gif[/img]", 0); } else if (selectedValue === "ubb_mq") { insertText(textarea, "[img=70,70]http://static2.51gonggui.com/FqNDzswUNJ-AsSHXyxXB4Qm1X0y-#.gif[/img]", 0); } else if (selectedValue === "ubb_sw") { insertText(textarea, "[img=70,70]http://static2.51gonggui.com/Fsq-HyBc5lP6vZY_qeWofOM9mRVH#.gif[/img]", 0); } else if (selectedValue === "ubb_cs") { insertText(textarea, "[img=70,51]http://static2.51gonggui.com/FhCk4emkrO9f8ICFxKlm8wBcTOgT#.gif[/img]", 0); } else if (selectedValue === "ubb_bs") { insertText(textarea, "[img=70,70]http://static2.51gonggui.com/FkEHwSlEfQ7bWya6-wg366Xy91qW#.gif[/img]", 0); } else if (selectedValue === "ubb_tg") { insertText(textarea, "[img]http://static2.51gonggui.com/Fi2hY7M9DPgD9s0aCWemwk2iYUDW#.gif[/img]", 0); } else if (selectedValue === "ubb_st") { insertText(textarea, "[img=70,70]http://static2.51gonggui.com/Fhry6EpdUBqFCt3OOyQTkLZMZGFR#.gif[/img]", 0); } else if (selectedValue === "ubb_gz") { insertText(textarea, "[img=70,86]http://static2.51gonggui.com/FhgYnWJ-apnyjSXOpInJhLbfUQFY#.gif[/img]", 0); } else if (selectedValue === "ubb_tt") { insertText(textarea, "[img]http://static2.51gonggui.com/FvSxOEIhyA7ID1J8emIME7tBT7Io#.gif[/img]", 0); } else if (selectedValue === "ubb_nt") { insertText(textarea, "[img]https://pic.ziyuan.wang/2023/10/05/yaohuo007_0d2c7f295ce74.jpg[/img]", 0); } else if (selectedValue === "ubb_sq") { insertText(textarea, "[img]http://static2.51gonggui.com/FgXUeACmKWWMDT9hrpVAnQp4dCqF#.gif[/img]", 0); } else if (selectedValue === "ubb_pt") { insertText(textarea, "[img]http://static2.51gonggui.com/Fg_qtra3abNozPxaoEMVKO7VIsuX#.gif[/img]", 0); } else if (selectedValue === "ubb_tp") { insertText(textarea, "[img]http://static2.51gonggui.com/FnNg1vOiuOlSe7WFWRyNZfO_4H3U#.gif[/img]", 0); } else if (selectedValue === "ubb_zj") { insertText(textarea, "[img]http://static2.51gonggui.com/Fj7WAkv87tpL1I26WQgSaXlsyYBL#.gif[/img]", 0); } else if (selectedValue === "ubb_lsj") { insertText(textarea, "[img=70,70]http://static2.51gonggui.com/FgwFBazeUavJcw-SL7FS6wUkcUTk#.gif[/img]", 0); } else if (selectedValue === "ubb_qt") { insertText(textarea, "[img=70,45]http://static2.51gonggui.com/FjXNVx-MUgAVq62aNqekSPOUjDAC#.gif[/img]", 0); } else if (selectedValue === "ubb_gj") { insertText(textarea, "[img]http://static2.51gonggui.com/FjudMlJdd8dLXuGjyASN7JldAxqe#.gif[/img]", 0); } else if (selectedValue === "ubb_dn") { insertText(textarea, "[img]https://pic.ziyuan.wang/2023/10/05/yaohuo007_fd6d0ab3998ca.gif[/img]", 0); } else if (selectedValue === "ubb_dp") { insertText(textarea, "[img]https://pic.ziyuan.wang/2023/10/05/yaohuo007_4f00b418adcc6.gif[/img]", 0); } else if (selectedValue === "ubb_zq") { insertText(textarea, "[img]https://pic.ziyuan.wang/2023/10/05/yaohuo007_6d248534e18f5.gif[/img]", 0); } else if (selectedValue === "ubb_cj") { insertText(textarea, "[img]http://static2.51gonggui.com/Fmf5aWS5yqycKebxTno7un53h9HW#.gif[/img]", 0); } else if (selectedValue === "ubb_fj") { insertText(textarea, "[img]http://static2.51gonggui.com/FhUkLD2khZ7hn1uzArWkT47Pd9jq#.gif[/img]", 0); } else if (selectedValue === "ubb_nb") { insertText(textarea, "[img]https://pic.ziyuan.wang/2023/10/05/yaohuo007_725ca2fc60ace.gif[/img]", 0); } else if (selectedValue === "ubb_yb") { insertText(textarea, "[img]https://pic.ziyuan.wang/2023/05/17/177e4e0e2f28d.gif[/img]", 0); } else if (selectedValue === "ubb_nn") { insertText(textarea, "[img=70,70]https://pic.ziyuan.wang/2023/06/27/e9a2be0a1139f.gif[/img]", 0); } // 插入智能回复的内容 //insertText(textarea, "[right]", 0); // 触发快速回复按钮的点击事件 quickReplyBtn.click(); textarea.value = ""; textarea.blur(); } }); //其他评论ubb模块 document.getElementById("ubb_jyo").addEventListener("click", (e) => { const textarea = document.querySelector('[name="content"]'); e.preventDefault(); insertText(textarea, "[right]", 0); }); document.getElementById("ubb_jz").addEventListener("click", (e) => { const textarea = document.querySelector('[name="content"]'); e.preventDefault(); insertText(textarea, "[left]", 0); }); document.getElementById("ubb_hhf").addEventListener("click", (e) => { const textarea = document.querySelector('[name="content"]'); e.preventDefault(); insertText(textarea, "///", 0); }); document.getElementById("ubb_hr").addEventListener("click", (e) => { const textarea = document.querySelector('[name="content"]'); e.preventDefault(); insertText(textarea, "[hr]", 0); }); document.getElementById("ubb_nzgsa").addEventListener("click", () => { const textarea = document.querySelector('[name="content"]'); if (textarea.value !== "") { const regex = /\[audio=[\w]+\].*\[\/audio\]/; if (regex.test(textarea.value)) { alert("你已经插入一个啦,别太贪心!"); } else { insertText(textarea, "[audio=X]https://file.uhsea.com/2304/3deb45e90564252bf281f47c7b47a153KJ.mp3[/audio]", 0); } } else { alert("不要无意义灌水啦!"); } }); document.getElementById("ubb_url").addEventListener("click", (e) => { const textarea = document.querySelector('[name="content"]'); e.preventDefault(); insertText(textarea, "[url][/url]", 6); }); document.getElementById("ubb_img").addEventListener("click", (e) => { const textarea = document.querySelector('[name="content"]'); e.preventDefault(); insertText(textarea, "[img][/img]", 6); }); } else if ( postPage.includes(window.location.pathname) ) { // 发帖UBB增强 // 2023-10-5修复新版UI问题 let textarea = document.querySelector('textarea[name="book_content"]'); let container = textarea.parentNode; container.style.display = 'flex'; container.style.flexDirection = 'column'; let bookContent = document.getElementsByName("book_content")[0]; bookContent.insertAdjacentHTML( "beforebegin", `<div class='bt4'> <a id='ubb_a'>超链接</a> <a id='ubb_img'>图片</a> <a id='ubb_movie'>视频</a> <a id='ubb_more'>更多</a> </div> <div class='' id='more_ubb_tools' style='display: none; width:100%;'> <div class='bt4' style='${bt4style};'> <a id='ubb_s'>删除线</a> <a id='ubb_f'>文字颜色</a> <a id='ubb_back'>背景色</a> <a id='ubb_font'>字体</a> </div> <div class='bt4' style='${bt4style};'> <a id='ubb_b'>加粗</a> <a id='ubb_on'>在线人数</a> <a id='ubb_u'>下划线</a> <a id='ubb_i'>斜体</a> </div> <div class='bt4'style='${bt4style};'> <a id='ubb_ip'>ip</a> <a id='ubb_id'>id</a> <a id='ubb_audio'>音频</a> <a id='ubb_left'>居左</a> </div> <div class='bt4'style='${bt4style};'> <a id='ubb_center'>居中</a> <a id='ubb_right'>居右</a> <a id='ubb_textind'>文本缩进</a> <a id='ubb_hr'>分割线</a> </div> <div class='bt4'style='${bt4style};'> <a id='ubb_next'>下一页</a> <a href='https://scflover.cf/dy'>抖音解析</a> <a href='https://www.yaohuo.me/tuchuang/'>妖火图床</a> <a href='https://img.ink/'>水墨图床</a> </div> </div>` ); document.getElementById("ubb_more").addEventListener("click", () => { let ubb_tool = document.getElementById("more_ubb_tools"); ubb_tool.style.display = ubb_tool.style.display === "none" ? "block" : "none"; }); document.getElementById("ubb_next").addEventListener("click", () => insertText(bookContent, "[next]", 0)); document.getElementById("ubb_right").addEventListener("click", () => insertText(bookContent, "[right]", 0)); document.getElementById("ubb_id").addEventListener("click", () => insertText(bookContent, "[userid]", 0)); document.getElementById("ubb_on").addEventListener("click", () => insertText(bookContent, "[online]", 0)); document.getElementById("ubb_ip").addEventListener("click", () => insertText(bookContent, "[ip]", 0)); document.getElementById("ubb_u").addEventListener("click", () => insertText(bookContent, "[u][/u]", 4)); document.getElementById("ubb_i").addEventListener("click", () => insertText(bookContent, "[i][/i]", 4)); document.getElementById("ubb_hr").addEventListener("click", () => insertText(bookContent, "[hr]", 0)); document.getElementById("ubb_font").addEventListener("click", () => insertText(bookContent, "[font=serif][/font]", 7)); document.getElementById("ubb_left").addEventListener("click", () => insertText(bookContent, "[left]", 0)); document.getElementById("ubb_center").addEventListener("click", () => insertText(bookContent, "[center]", 0)); document.getElementById("ubb_textind").addEventListener("click", () => insertText(bookContent, "[tab][tab][tab][tab][tab][tab]", 0)); document.getElementById("ubb_a").addEventListener("click", () => insertText(bookContent, "[url][/url]", 6)); const colors = [ "#FF0000", "#00FF00", "#0000FF", "#FF00FF", "#00FFFF", "#FFFF00", "#000000", "#70DB93", "#5C3317", "#9F5F9F", "#B5A642", "#D9D919", "#A67D3D", "#8C7853", "#5F9F9F", "#D98719", "#B87333", "#FF7F00", "#42426F", "#5C4033", "#2F4F2F", "#4A766E", "#9932CD", "#871F78", "#6B238E", "#2F4F4F", "#97694F", "#32CD32", "#E47833", "#8E236B", "#32CD99", "#3232CD", "#6B8E23", "#EAEAAE", "#9370DB", "#426F42", "#7F00FF", "#7FFF00", "#70DBDB", "#DB7093", "#A68064", "#23238E", "#4D4DFF", "#FF6EC7", "#00009C", "#EBC79E", "#CFB53B", "#FF7F00", "#FF2400", "#DB70DB", "#8FBC8F", "#BC8F8F", "#EAADEA", "#D9D9F3", "#5959AB", "#6F4242", "#BC1717", "#238E68", "#6B4226", "#8E6B23", "#E6E8FA", "#3299CC", "#007FFF", "#FF1CAE", "#00FF7F", "#236B8E", "#38B0DE", "#DB9370", "#D8BFD8", "#ADEAEA", "#CDCDCD", "#4F2F4F", "#CC3299", "#D8D8BF", "#99CC32" ]; function generateRandomColor() { return colors[Math.floor(Math.random() * colors.length)]; } document.getElementById("ubb_f").addEventListener("click", () => { const attribute = document.getElementById("ubb_back").checked ? "backcolor" : "forecolor"; const randomColor = generateRandomColor(); insertText(bookContent, `[${attribute}=${randomColor}][/${attribute}]`, 12); }); document.getElementById("ubb_back").addEventListener("click", () => { const randomColor = generateRandomColor(); insertText(bookContent, `[backcolor=${randomColor}][/backcolor]`, 12); }); document.getElementById("ubb_b").addEventListener("click", () => insertText(bookContent, "[b][/b]", 4)); document.getElementById("ubb_s").addEventListener("click", () => insertText(bookContent, "[strike][/strike]", 9)); document.getElementById("ubb_img").addEventListener("click", () => insertText(bookContent, "[img][/img]", 6)); document.getElementById("ubb_movie").addEventListener("click", () => insertText(bookContent, "[movie=100%*100%]|[/movie]", 9)); document.getElementById("ubb_audio").addEventListener("click", () => insertText(bookContent, "[audio=X][/audio]", 8)); document.getElementById("ubb_more").addEventListener("click", () => { let ubb_tool = document.getElementsByClassName("more_ubb_tools")[0]; ubb_tool.style.display = ubb_tool.style.display === "none" ? "block" : "none"; }); } function insertText(obj, str, offset) { if (document.selection) { var sel = document.selection.createRange(); sel.text = str; } else if ( typeof obj.selectionStart === "number" && typeof obj.selectionEnd === "number" ) { var startPos = obj.selectionStart, endPos = obj.selectionEnd, cursorPos = startPos, tmpStr = obj.value; obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length); cursorPos += str.length; obj.selectionStart = obj.selectionEnd = cursorPos - offset; } else { obj.value += str; } obj.focus(); } //自动吃肉 const yushuzi = document.querySelector('.yushuzi').textContent; const id = document.querySelector('input[name="id"]').value; const textarea = document.querySelector('textarea.retextarea'); const timeid = new Date().toISOString().substr(0, 10).replace(/-/g, '') + id; const timeidArray = JSON.parse(localStorage.getItem('timeid') || '[]'); const previousText = localStorage.getItem('previousText') || ''; if (parseInt(yushuzi) > 0 && !timeidArray.includes(timeid)) { const insertText = previousText === '吃肉' ? '吃吃吃' : '吃肉'; localStorage.setItem('previousText', insertText); textarea.value = insertText + ' ' + textarea.value; document.querySelector('input[name="g"]').click(); timeidArray.push(timeid); localStorage.setItem('timeid', JSON.stringify(timeidArray)); console.log("timeid:", timeid); }