BHB聊天室背景图片更换(已全局兼容)

BHB界面背景图片修改,长期更新中(大概

Zainstaluj skrypt?
Skrypt zaproponowany przez autora

Może Ci się również spodobać. BVB的BHB聊天室背景

Zainstaluj skrypt
// ==UserScript==
// @name        BHB聊天室背景图片更换(已全局兼容)
// @namespace   Violentmonkey Scripts
// @match       https://*.boyshelpboys.com/*
// @description BHB界面背景图片修改,长期更新中(大概
// @grant       none
// @version     3.0.12
// @author      M27IAR
// @license     GPL-3.0-or-later
// @license     GPL-3.0-or-later; https://www.gnu.org/licenses/gpl-3.0.txt
// ==/UserScript==
(function(){
    let CheckUpdate=false//验证脚本是否更新
    //本地存储检测
    if(!localStorage.M27NewBBGPrint){//是否启用自定义聊天室
        localStorage.setItem("M27NewBBGPrint","false")
    }
    if(!localStorage.BackGroundColor){//背景颜色
        localStorage.setItem("BackGroundColor","#000000")
    }
    if(!localStorage.MsgLightCheckX){
        localStorage.setItem("MsgLightCheckX",'true')
    }
    if(!localStorage.MsgSet){
        localStorage.setItem("MsgSet","false");
    }
    if(!localStorage.MsgSetVisable){
        localStorage.setItem("MsgSetVisable","false");
    }
    if(!localStorage.TransparencySet){//透明度模块是否显示
        localStorage.setItem("TransparencySet","false");
    }
    if(!localStorage.PrintVisabel){
        localStorage.setItem("PrintVisabe","false")
    }
    if(!localStorage.PrintPicOpen){
        localStorage.setItem("PrintPicOpen","true")
    }
    if(!localStorage.PrintPlanCheck){
        localStorage.setItem("PrintPlanCheck","false")
    }
    if(!localStorage.IdPrintCheck){
        localStorage.setItem("IdPrintCheck","false");
    }
    if(!localStorage.PrintPicplanChk){
        localStorage.setItem("PrintPicplanChk","true")
    }
    if(!localStorage.BoxColor){//特效方格颜色
        localStorage.setItem("BoxColor","#000000");
    }
    if(!localStorage.BoxBorderColor){//特效方格描边色
        localStorage.setItem("BoxBorderColor","#000000");
    }
    if(!localStorage.MsgBoxTra){
        localStorage.setItem("MsgBoxTra",'0.2');
    }
    if(!localStorage.MsgBoxColor){//消息框背景色
        localStorage.setItem("MsgBoxColor","#000000");
    }
    if(!localStorage.BoxBorderCansee){
        localStorage.setItem("BoxBorderCansee","99");
    }
    if(!localStorage.BoxPrint){//是否启动特效方格渲染
        localStorage.setItem("BoxPrint","no");
    }
    if(!localStorage.BoxSize){//特效方格大小
        localStorage.setItem("BoxSize","50");
    }
    if(!localStorage.BackgroundPrint){//图像背景尺寸设置
        localStorage.setItem("BackgroundPrint","cover");
    }
    if(!localStorage.centerPosition){//居中渲染设定
        localStorage.setItem("centerPosition","center");
    }
    if(!localStorage.heightsize){//宽度默认值
        localStorage.setItem("heightsize",'100');
    }
    if(!localStorage.widthsize){//高度默认值
        localStorage.setItem("widthsize",'100');
    }
    if(!localStorage.left){//左侧偏转角度
        localStorage.setItem("left",'0');
    }
    if(!localStorage.top){//顶部偏转角度
        localStorage.setItem("top",'0');
    }
    if(!localStorage.webpiclod){//加载线上图片
        localStorage.setItem("webpiclod",1);
    }
    if(!localStorage.localpiclod){//加载本地图片
        localStorage.setItem("localpiclod",0);
    }
    if(!localStorage.leaderhide){//隐藏左侧条目
        localStorage.setItem("leaderhide",0);
    }
    if(!localStorage.canseenunber){//透明度数字
        localStorage.setItem("canseenunber",0.50);
    }
    if(!localStorage.printToBack){//渲染到背景
        localStorage.setItem("printToBack",1);
    }
    if(!localStorage.printToBBS){//渲染到聊天界面
        localStorage.setItem("printToBBS",0);
    }
    if(!localStorage.NameFontSize){//聊天室ID|其他页面部分字体的尺寸
        localStorage.setItem("NameFontSize",12);
    }
    if(!localStorage.LocalFontColor){//聊天室ID|其他页面部分字体的颜色
        localStorage.setItem("LocalFontColor","#ffffff")
    }
    if(!localStorage.LocalFontColorsec){//聊天室ID|其他页面部分字体的描边
        localStorage.setItem("LocalFontColorsec","#7071a4")
    }
    if(!localStorage.BorderTextSize){//聊天室ID|其他页面部分字体的描边粗细
        localStorage.setItem("BorderTextSize",1);
    }
    if(!localStorage.scrollstyle){//滚动条状态
        localStorage.setItem("scrollstyle","1")
    }
    if(!localStorage.CantSeeset1){//聊天历史记录1
        localStorage.setItem("CantSeeset1","00");
    }
    if(!localStorage.CantSeeset3){//聊天历史记录2(位置更靠里
        localStorage.setItem("CantSeeset3","00");
    }
    if(!localStorage.CantSeeset4){//聊天页面外层边框
        localStorage.setItem("CantSeeset4","20");
    }
    if(!localStorage.CantSeeset5){//聊天页面外层边框
        localStorage.setItem("CantSeeset5","20");
    }
    if(!localStorage.CantSeeset6){//聊天页面外层边框
        localStorage.setItem("CantSeeset6","20");
    }
    if(!localStorage.CantSeeset7){//聊天页面外层边框
        localStorage.setItem("CantSeeset7","20");
    }
    if(!localStorage.CantSeeset8){//聊天页面外层边框
        localStorage.setItem("CantSeeset8","50");
    }
    if(!localStorage.CantSeeset9){//聊天页面外层边框
        localStorage.setItem("CantSeeset9","20");
    }
    if(!localStorage.CantSeeColor1){//聊天历史记录1
        localStorage.setItem("CantSeeColor1","#2b2c40");
    }
    if(!localStorage.CantSeeColor3){//自顶栏往下部分
        localStorage.setItem("CantSeeColor3","#2b2c40");
    }
    if(!localStorage.CantSeeColor4){//聊天页面外层边框
        localStorage.setItem("CantSeeColor4","#2b2c40");
    }
    if(!localStorage.CantSeeColor5){//聊天页面外层边框
        localStorage.setItem("CantSeeColor5","#2b2c40");
    }
    if(!localStorage.CantSeeColor6){//聊天页面外层边框
        localStorage.setItem("CantSeeColor6","#2b2c40");
    }
    if(!localStorage.CantSeeColor7){//聊天页面外层边框
        localStorage.setItem("CantSeeColor7","#2b2c40");
    }
    if(!localStorage.CantSeeColor8){//聊天页面外层边框
        localStorage.setItem("CantSeeColor8","#66ccff");
    }
    if(!localStorage.CantSeeColor9){//聊天页面外层边框
        localStorage.setItem("CantSeeColor9","#2b2c40");
    }
    if(!localStorage.webimgsrc){//线上图片链接
        localStorage.setItem("webimgsrc",'https://file.uhsea.com/2501/dcf32737963071eb748593c038add7cdP3.png');
    }
    if(!localStorage.version||localStorage.version!=="3.0.12"){//更新后修改部分选项,理论上不会影响用户
        localStorage.setItem("version","3.0.12");CheckUpdate=true;localStorage.removeItem("CantSeeColor2");localStorage.removeItem("CantSeeset2");
        if(localStorage.webimgsrc==="https://file.uhsea.com/2501/dcf32737963071eb748593c038add7cdP3.png"||localStorage.webimgsrc==="https://t1-img.233213.xyz/2024/11/29/674922c38c1df.png"||localStorage.webimgsrc==="https://file.uhsea.com/2501/8298cc1941d4d5173d32e8a78bf67e6a6K.jpg") {
            if(webWidth<webHeight){
                localStorage.setItem("webimgsrc", 'https://file.uhsea.com/2501/c8859f9cfcefe1b9fd658301aa1c70af5P.jpg');
            }else{
                localStorage.setItem("webimgsrc", 'https://file.uhsea.com/2501/54d2c95d4f41d80cec435c63cd50dd24RG.jpg');
            }
        }
    }else{CheckUpdate=false}
    /*
    这里是历史使用过的默认在线URL,需要自取:
    https://t1-img.233213.xyz/2024/11/25/67447535ec930.jpg
    https://t1-img.233213.xyz/2024/11/29/674922c38c1df.png
    https://file.uhsea.com/2501/8298cc1941d4d5173d32e8a78bf67e6a6K.jpg
    https://file.uhsea.com/2501/dcf32737963071eb748593c038add7cdP3.png
    https://file.uhsea.com/2501/c8859f9cfcefe1b9fd658301aa1c70af5P.jpg
    https://file.uhsea.com/2501/54d2c95d4f41d80cec435c63cd50dd24RG.jpg
    */
    //本地数值设定结束

    //通过读取本地存储数据进行选择值设定
    let webpiclod="";
    let localpiclod="";
    let leadermanhide="";
    let PrintToBackground="";
    let PrintToBBSGround="";
    let Scrollstylex;
    let BackPrintSelectBox="";
    let Backleft;
    let BackTop;
    if (localStorage.centerPosition===""){//是否启用居中渲染
        Backleft=localStorage.left+"px";
        BackTop=localStorage.top+"px";
    }else{
        Backleft=BackTop="";
    }
    if (localStorage.webpiclod==="1"){//读取本地图片还是线上图片
        webpiclod="checked"
    }else{
        localpiclod="checked"
    }
    if (localStorage.printToBack==="1"){//背景的填充位置
        PrintToBackground="checked"
    }else{
        PrintToBBSGround="checked"
    }
    if (localStorage.scrollstyle==="1"){//滚动条渲染
        Scrollstylex="checked"
    }else{
        Scrollstylex=""
    }
    if(localStorage.BackgroundPrint===""){
        BackPrintSelectBox="default"
    }else if(localStorage.BackgroundPrint==="cover"){
        BackPrintSelectBox="PicFirst"
    }else if(localStorage.BackgroundPrint==="contain"){
        BackPrintSelectBox="WebFirst"
    }
    //通过读取本地存储数据进行选择值设定结束

    //移除顶栏的磨砂效果
    let NeedFixStyleFive=document.querySelectorAll("style");
    NeedFixStyleFive[NeedFixStyleFive.length-1].insertAdjacentHTML("afterend",'<style id="style5"></style>');
    let FixStyleFive=document.querySelector("#style5")
    let nedAddStyleFive=document.createTextNode(`.layout-navbar-fixed .layout-page:before {backdrop-filter:  blur(0px);}`)//添加处理上部控件的背景模糊的样式表
    FixStyleFive.appendChild(nedAddStyleFive)

    let ContentColor//自定义颜色储存

    let localHightSize="";
    let localWidthSize="";
    //背景图片需要的div插入
    let addHTML='<div id="backread">'
    document.querySelector("body").insertAdjacentHTML("afterbegin",addHTML);
    let addtarge=document.querySelector("#backread");
    let bac=document.querySelector("body")//网页本体
    document.querySelector("#navbar-collapse > div").innerHTML=""//删除手机模式下顶部的图标

    //方片特效准备
    let webWidth = window.innerWidth;
    let webHeight = window.innerHeight;
    let DIVboxsize=localStorage.BoxSize;
    let printNunber
    let arr={};
    let addBoxinputlocal=document.querySelector("#backread")
    let addDIVmax=`<div id='Maxdiv' style='width:120%;pointer-events: none; position: fixed;top:0;left:-5%;right:-5%;bottom: 0;display: flex;flex-direction: row;flex-wrap:wrap;justify-content:left;align-items: flex-start;'></div>`
    addBoxinputlocal.insertAdjacentHTML("afterend",addDIVmax);
    let DIVmax=document.querySelector("#Maxdiv");
    rePrint(webWidth,webHeight);

    let tiner=setInterval(changeBackground,3000);//设置方片波动效果
    if(localStorage.BoxPrint==="no"){
        clearInterval(tiner)
    }

    window.addEventListener('resize', function(){//在界面尺寸变更时重新填充背景方块
        clearInterval(tiner);
        webWidth=window.innerWidth;
        webHeight=window.innerHeight;
        setTimeout(function () {
            rePrint(webWidth,webHeight);
        },100)
        tiner=setInterval(changeBackground,3000);
        if(localStorage.BoxPrint==="no"){
            clearInterval(tiner)
        }
    })
    //window.alert = function() {};
    window.history.replaceState(null, null, window.location.href);

    function getColorSet(){//获取用户的个性化颜色设置
        ContentColor=localStorage.getItem("statelyThemeColor")
        if(ContentColor==="default"){
            ContentColor="#FF8FA2"
        }
    }
    getColorSet()
    //覆盖站长的方法
    const OnlineUsers = {users: new Map(),init() {},bindEvents() {},addUser(username, avatar) {},updateOnlineStatus() {},updateUsersList() {}};
    window.OnlineUsers = {users: new Map(),lastActivity: new Map(),pageSize: 10,  currentPage: 1, init() {},bindEvents() {},updateUserActivity(username) {},addUser(username, avatar) {},updateOnlineStatus() {},updateUsersList() {},updateBottomButtons(hasMore) {},resetPagination() {},updateActiveUsers() {}};
    function createMessageMenu() {}//覆盖站长的方法

    function leftANDtop() {
        let MsgBoxRed=Number("0x"+localStorage.MsgBoxColor.substring(1,3)),MsgBoxGreen=Number("0x"+localStorage.MsgBoxColor.substring(3,5)),MsgBoxBlue=Number("0x"+localStorage.MsgBoxColor.substring(5))
        let NeedFixStyle=document.querySelector("head");//插入样式表修改左侧与顶栏样式
        NeedFixStyle.insertAdjacentHTML("afterbegin",'<style id="style1"></style>');//杂,但是为多页面内共有项目
        let nedAddStyle=document.createTextNode(` 
        ::selection{
        color:#0000FF !important;} 
        ::-moz-selection{color:#0000FF !important;} 
        .RangeSetting{height:0.5rem;width:7.8125rem;} 
        .ColorSettinr{width:2.75rem;} 
        .SettiingInput{padding:2px 1px;border:0.125rem 0rem;} 
        .GameBarFix{background-color:${localStorage.CantSeeColor6}${localStorage.CantSeeset6} !important;
        border:0 !important;margin:0 !important; transition: 0.3s;} 
        hr{margin: 0.125rem 0 !important;color:#f0f5f9;} 
        small{text-shadow: 1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},-1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 -1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},-1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 -1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},-1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 -1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},-1px 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor},0 -1px ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor} ;font-size:${localStorage.NameFontSize}px !important; color:${localStorage.LocalFontColorsec} } 
        .fuckyou2{
        background-color:rgba(40,64,120,0.4); 
        color: aqua; 
        margin:0px;
        padding: 2px 7px;
        border: 1px aqua solid;
        cursor: pointer;
        transition: background-color 0.3s;
        border-radius: 10px;}
        .fuckyou2:hover{
        background-color: #FFFFFF; 
        color:#66ccff; 
        -webkit-text-stroke:0px;} 
        .fuckyou3{background-color: rgba(40,64,120,0.4); 
        color: aqua; 
        margin:0px;
        padding: 2px 7px;
        border: 1px aqua solid;
        cursor: pointer;
        transition: background-color 0.3s;
        border-radius: 0px;}
        .fuckyou3:hover{background-color: #FFFFFF;
        color:#66ccff;
        -webkit-text-stroke:0px;}  
        .fuckyou{background-color: #2b2c4030; 
        color: white; 
        margin:0.3125rem;
        padding: 0.3125rem;
        border: 0.125rem gray solid;
        font-size:1rem; 
        cursor: pointer;
        transition: background-color 0.3s;
        border-radius: 10px;} 
        .fuckyou:hover{background-color: #FFFFFF; 
        color:#66ccff;} 
        @media (max-width:426px){
        .fuckyou{background-color: #2b2c4030; 
        color: white; 
        padding: 0.5rem 0.5rem;
        border: 0.125rem gray solid;
        font-size:0.625rem;
        cursor: pointer;
        transition: background-color 0.3s;border-radius: 10px;}} 
        .send-btn-M27{
        padding:0.3125rem 0.625rem !important;
        width:4.5rem !important;
        height:2.5rem !important;
        border:0.125rem solid hsl(var(--bs-primary-h), calc(var(--bs-primary-s) * 1%), calc(var(--bs-primary-l) * 1%)) !important;
        border-radius:20px !important;
        margin-left:0.3125rem !important;} 
        .send-btn-M27:hover{
        background-color:hsl(var(--bs-primary-h), calc(var(--bs-primary-s) * 1%), calc(var(--bs-primary-l) * 1%)) !important;
        border-color:while !important;}`)
        let FixStyle=document.querySelector("#style1");
        FixStyle.appendChild(nedAddStyle);
        //方片动态背景的相关css
        let BorderRGBRed=Number("0x"+localStorage.BoxBorderColor.substring(1,3)),BorderRGBGreen=Number("0x"+localStorage.BoxBorderColor.substring(3,5)),BorderRGBBlue=Number("0x"+localStorage.BoxBorderColor.substring(5))
        NeedFixStyle.insertAdjacentHTML("afterbegin",'<style id="style3"></style>');
        let nedAddStyleSec=document.createTextNode(`
    .M27MojPackImg{
    width:100px; height:100px;background-size:cover;background-color:#000000;} 
    .M27flexDivSet{
    pointer-events: none; 
    transition: background-color 2s;
    width:${localStorage.BoxSize}px;height:${localStorage.BoxSize}px;
    flex-basis:${localStorage.BoxSize}px;
    border:1px solid rgba(${BorderRGBRed},${BorderRGBGreen},${BorderRGBBlue},0.${localStorage.BoxBorderCansee});margin;0px;
    }`)
        let FixStyleSec=document.querySelector("#style3");
        FixStyleSec.appendChild(nedAddStyleSec);
        //修改站长加的消息时间|添加指示灯的相关css动画样式
        let NeedFixStyleThee=document.querySelectorAll("style");
        NeedFixStyleThee[NeedFixStyleThee.length-1].insertAdjacentHTML("afterend",'<style id="style4"></style>');
        let FixStyleThee=document.querySelector("#style4")
        let nedAddStyleThee=document.createTextNode(`
        .card{
        --bs-card-bg: rgba(45, 45, 45, 0.7);}
        .M27-chat-history-body {
        flex: 0 1 auto;height: calc(100vh - 19.5rem);
        padding: 1.25rem 1.25rem;
        overflow-x: hidden;
        overflow-y: auto;}
        .M27-list-unstyled {list-style: none;
        padding-left: 0;}
        .M27-online-users-list {overflow:auto;padding: 5px;
        max-height:200px;
        scrollbar-width:thin !important;}
        .M27-online-users-btn {border: none;
        background: none;padding: 8px;display: flex;
        align-items: center;cursor: pointer;
        color: var(--bs-body-color);
        transition: all 0.2s;position: relative;
        width:36px;height:36px;}
        .M27-online-users-btn:hover {
        color: var(--bs-primary);}.text-muted {
        --bs-text-opacity: 1;text-shadow: 0 0 ${localStorage.BorderTextSize}px ${localStorage.LocalFontColor};
        font-size:${localStorage.NameFontSize}px; color:${localStorage.LocalFontColorsec} !important;}
        .dark-style .app-chat .app-chat-history .chat-history-body .chat-history .chat-message:not(.chat-message-right) .chat-message-text {
        backdrop-filter: blur(5px) !important;
        background-color: rgba(${MsgBoxRed},${MsgBoxGreen},${MsgBoxBlue},${localStorage.MsgBoxTra}) !important;
        box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25) !important;}
        .dark-style .app-chat .app-chat-history .chat-history .chat-message.chat-message-right .chat-message-text {
        backdrop-filter: blur(5px) !important;
        background-color: rgba(${MsgBoxRed},${MsgBoxGreen},${MsgBoxBlue},${localStorage.MsgBoxTra}) !important;
        box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25) !important;}
        .dropdown-item {line-height: 1.54;backdrop-filter: blur(5px);}
        .offcanvas {background-color: rgba(43,44,64,0.5); }
        @keyframes M27shineGreen{0%{opacity:0.5;background-color:green;}100%{opacity:1;background-color:#77F602;}} @keyframes M27shineYellow{0%{opacity:0.5;background-color:yellow;}100%{opacity:1;background-color:#F6D603;}} @keyframes M27shineRed{0%{opacity:0.5;background-color:red;}100%{opacity:1;background-color:#F60303;}} .linkOpen{animation:M27shineGreen 5s ease-in infinite alternate} .linkBadWeb{animation:M27shineRed 2s ease-in infinite alternate} .linkOutTime{animation:M27shineYellow 4s ease-in infinite alternate} .loading-more {text-align: center;padding: 10px;color: #666;font-size: 12px;background-color: #66CCFF00; }`)
        FixStyleThee.appendChild(nedAddStyleThee);
        if(!document.querySelector("#statelyMyInfoModal > ul > div")){}else{document.querySelector("#statelyMyInfoModal > ul > div").setAttribute("style","backdrop-filter: blur(5px);")}
        document.querySelector("body").setAttribute("style",`background-color:${localStorage.BackGroundColor}`);

        if (localStorage.leaderhide==="1"){//左侧导航栏的隐藏与显示
            leadermanhide="checked"
            let DIV1=document.querySelector("#top > div")
            DIV1.setAttribute('style', 'padding-left:0rem;');
            let DIV2=document.querySelector("#layout-navbar");
            DIV2.setAttribute('style', `width:100%;left:0rem;background-color:${localStorage.CantSeeColor5}${localStorage.CantSeeset5} !important;backdrop-filter:saturate(100%) !important;`);
            document.querySelector("#layout-menu").setAttribute('style','display:none;')
        }else{
            leadermanhide=""
            let DIV2=document.querySelector("#layout-navbar");
            DIV2.setAttribute('style', `background-color:${localStorage.CantSeeColor5}${localStorage.CantSeeset5} !important;backdrop-filter:saturate(100%) !important;`);
            let DIV3=document.querySelector("#layout-menu")
            DIV3.setAttribute('style','background-color:rgba(255,255,255,0);')

        }
    }

    function addtolocal() {//保存背景设置
        let heightsize=document.getElementById("heightsize");//高度比例
        let widthsize=document.getElementById("widthsize");//宽度比例
        let left=document.getElementById("left");//离左侧的距离
        let top=document.getElementById("top");//离顶部的距离
        let webimgsrc=document.getElementById("localimgsrc");//网络图片链接
        let webpiclod=document.querySelector("#webpicon");//选择渲染网络图片
        let leaderhideplan=document.querySelector("#leadermanhide");//左侧菜单隐藏
        let canseenunber=document.querySelector("#notseenumber");//背景透明度(只在非backimage状态生效)
        let PrintToBackgroundValue=document.querySelector("#printToWebback");
        let LocalBbsNameFontSize=document.querySelector("#size");//聊天室名称大小输入框
        let LocalFontColorset=document.querySelector("#fontcolor");//聊天室描边颜色
        let LocalFontColorsetsec=document.querySelector("#fontcolorsec");//聊天室字体颜色
        let BorderTextSize=document.querySelector("#BorderText");//聊天室描边大小输入框
        let printSelcetBox=document.querySelector("#selectBox");//背景渲染方式
        let centerPosion=document.querySelector("#center")//居中渲染按钮
        let PrintOpen=document.querySelector("#PrintPic");//图像渲染启动按钮
        let PrintPlan=document.querySelector("#PrintPicplan");//图片渲染板块选择框
        let IdPrintOpenchec=document.querySelector("#OpenIdPrint")//id渲染板块启用框
        let PrintPlanChec=document.querySelector("#PrintPlan");//渲染模式板块启用框
        let PrintVisabelOpen=document.querySelector("#PrintVisable")//特效板块启用框
        let TranSet=document.querySelector("#TransparencySet")//透明度板块启用框

        let uplodeheightsize=parseInt(heightsize.value)//高度比例(转数字)
        let uplodewidthsize=parseInt(widthsize.value)//宽度比例(转数字)
        let uplodeleft=parseInt(left.value)//左侧距离(转数字)
        let uplodetop=parseInt(top.value)//顶部距离(转数字)

        //开始写入数据
        localStorage.setItem("BackGroundColor",document.querySelector("#BackGroundColor").value)
        if(TranSet.checked){
            localStorage.setItem("TransparencySet","true");
        }else{
            localStorage.setItem("TransparencySet","false")
        }
        if(PrintVisabelOpen.checked){
            localStorage.setItem("PrintVisable","true")
        }else{
            localStorage.setItem("PrintVisable","false")
        }
        if(PrintOpen.checked){
            localStorage.setItem("PrintPicOpen","true");
        }else{
            localStorage.setItem("PrintPicOpen","false");
        }
        if(PrintPlanChec.checked){
            localStorage.setItem("PrintPlanCheck","true")
        }else{
            localStorage.setItem("PrintPlanCheck","false")
        }
        if(IdPrintOpenchec.checked){
            localStorage.setItem("IdPrintCheck","true")
        }else{
            localStorage.setItem("IdPrintCheck","false")
        }
        if(PrintPlan.checked){//判断用户是否启用图片背景
            localStorage.setItem("PrintPicplanChk","true")
        }else{
            localStorage.setItem("PrintPicplanChk","false")
        }
        if (uplodeheightsize=="0"){//判断宽度比例和高度比例是否输入为0
            localStorage.setItem("heightsize","auto");
        }else{
            localStorage.setItem("heightsize",uplodeheightsize);
        }
        if (uplodewidthsize=="0"){
            localStorage.setItem("widthsize","auto");
        }else{
            localStorage.setItem("widthsize",uplodewidthsize);
        }
        localStorage.setItem("left",uplodeleft);
        localStorage.setItem("top",uplodetop);
        localStorage.setItem("webimgsrc",webimgsrc.value);
        localStorage.setItem("canseenunber",canseenunber.value);
        localStorage.setItem("backgroundplan",0);
        localStorage.setItem("webpiclod",0);
        localStorage.setItem("localpiclod",0);
        localStorage.setItem("sectionplan",0);
        localStorage.setItem("leaderhide",0);
        localStorage.setItem("printToBack",0);
        localStorage.setItem("printToBBS",0);
        localStorage.setItem("NameFontSize",LocalBbsNameFontSize.value);
        localStorage.setItem("LocalFontColor",LocalFontColorset.value);
        localStorage.setItem("LocalFontColorsec",LocalFontColorsetsec.value);
        localStorage.setItem("BorderTextSize",BorderTextSize.value);

        if (webpiclod.checked){//判断用户选择的图片加载来源
            localStorage.setItem("webpiclod",1);
        }else{
            localStorage.setItem("localpiclod",1);
        }
        if (PrintToBackgroundValue.checked){//判断用户选择的图片加载位置
            localStorage.setItem("printToBack",1);
        }else{
            localStorage.setItem("printToBBS",1);
        }
        if(leaderhideplan.checked){//判断用户选择的图左侧导航栏状态
            localStorage.setItem("leaderhide",1);
        }else{
            localStorage.setItem("leaderhide",0);
        }
        if(centerPosion.checked){
            localStorage.setItem("centerPosition",centerPosion.value);
        }else{
            localStorage.setItem("centerPosition","");
        }
        if(printSelcetBox.value==="default"){//判断用户选择的渲染状态
            localStorage.setItem("BackgroundPrint","");
        }else if(printSelcetBox.value==="PicFirst"){
            localStorage.setItem("BackgroundPrint","cover");
        }else if(printSelcetBox.value==="WebFirst"){
            localStorage.setItem("BackgroundPrint","contain");
        }
        addStyleToLocal()
        let adddiv=document.querySelector("#localsett");
        adddiv.style.display="none";
        location.reload();

    }
    function addStyleToLocal() {//保存控件透明度
        let seenum=document.querySelectorAll("#cantseegive > input[type=range]")//透明度获取
        let seecolor1=document.querySelector("#Msgcolor1");//聊天历史记录1颜色
        let seecolor3=document.querySelector("#Msgcolor3");//聊天历史记录2颜色
        let seecolor4=document.querySelector("#Msgcolor4");//聊天历史记录2颜色
        let seecolor5=document.querySelector("#Msgcolor5");//顶栏
        let seecolor6=document.querySelector("#Msgcolor6");//聊天框外框
        let seecolor7=document.querySelector("#Msgcolor7");//发送框颜色透明度
        let seecolor8=document.querySelector("#Msgcolor8");//发送框描边
        let seecolor9=document.querySelector("#Msgcolor9");//发送框描边

        let printseenum={}
        let seenunvalue
        for(let i=0;i<seenum.length;i++){
            seenunvalue=(Math.round(Number(seenum[i].value)*255/100).toString(16))
            if(seenunvalue.length<=1){//转化为16进制来保存
                seenunvalue="0"+seenunvalue;
            }
            localStorage.setItem(`CantSeeset${i+1}`,seenunvalue);
            printseenum[i]=seenunvalue
        }
        localStorage.setItem("CantSeeColor1",seecolor1.value);
        localStorage.setItem("CantSeeColor3",seecolor3.value);
        localStorage.setItem("CantSeeColor4",seecolor4.value);
        localStorage.setItem("CantSeeColor5",seecolor5.value);
        localStorage.setItem("CantSeeColor6",seecolor6.value);
        localStorage.setItem("CantSeeColor7",seecolor7.value);
        localStorage.setItem("CantSeeColor8",seecolor8.value);
        localStorage.setItem("CantSeeColor9",seecolor9.value);

        leftANDtop();
        location.reload();

    }

    function  handleFileSelect(){//图片转base64存储在indexedDB
        let addlocalupdate=document.querySelector("#webimgsrc")
        let imgFile = new FileReader();
        imgFile.readAsDataURL(addlocalupdate.files[0]);
        imgFile.onload = function () {
            let imgDataBase64 = this.result; //base64数据
            // 打开或创建一个数据库
            let request = indexedDB.open('databaseName', 6);
            // 处理数据库升级
            request.onupgradeneeded = function(event) {
                let db = event.target.result;
                // 创建对象存储(表)并设置主键
                if (!db.objectStoreNames.contains("storeName")) {
                    // 数据库不存在,可以在此处创建对象存储空间
                    let objectStore = db.createObjectStore("storeName", { keyPath: "id" });
                    objectStore.createIndex('fieldName', 'fieldName', { unique: false });
                }
                if (!db.objectStoreNames.contains("EmoDB")) {
                    // 数据库不存在,可以在此处创建对象存储空间
                    let objectStoreSec = db.createObjectStore('EmoDB', { keyPath: 'id' });
                    // 创建索引
                    objectStoreSec.createIndex('fieldName', 'fieldName', { unique: false });
                }
            };request.onsuccess = function(event) {// 数据库打开成功时的回调
                let db = event.target.result;
                // 进行事务操作
                let transaction = db.transaction('storeName', 'readwrite');
                let objectStore = transaction.objectStore('storeName');
                // 插入数据
                objectStore.put({ id: 1, name:imgDataBase64});
                transaction.oncomplete = function() {
                    console.log('数据插入DBD成功');
                };
                transaction.onerror = function(event) {
                };//准备写入图片的BASE64数据
                let queryTransaction = db.transaction(['storeName']);
                let queryObjectStore = queryTransaction.objectStore('storeName');
                let query = queryObjectStore.get(1);
                query.onsuccess = function(event) {
                };
                db.close();
            };// 错误处理
            request.onerror = function(event) {
                console.error('Database error:', event.target.error);
            };
        }

    }//图片转base64存储在localstorage部分结束

    function WidthHeightSet(){//背景宽高设定
        if(localStorage.BackgroundPrint===""){
            if (localStorage.heightsize==="auto"||localStorage.heightsize==="NaN"){
            localHightSize="auto";
            }else{
            localHightSize=localStorage.heightsize+'%';
            }
            if (localStorage.widthsize==="auto"||localStorage.widthsize==="NaN"){
            localWidthSize="auto";
            }else{
            localWidthSize=localStorage.widthsize+'%';
            }
        }else if(localStorage.BackgroundPrint==="cover"){
            localHightSize="";localWidthSize="cover";
        }else if(localStorage.BackgroundPrint==="contain"){
            localHightSize="";localWidthSize="contain";
        }
    }

    function backPrint(BBSmsgBack,Fromer,nowurl){//背景渲染设定
        let openpic = indexedDB.open('databaseName', 6);//调用数据库读取本地存储的base64图片数据
        openpic.onupgradeneeded = function(event) {//没有调用则创建|选择了新版本数据库而重建
            let db = event.target.result;
            // 创建对象存储(表)并设置主键
            if (!db.objectStoreNames.contains("storeName")) {
                // 数据库不存在,可以在此处创建对象存储空间
                let objectStore = db.createObjectStore("storeName", { keyPath: "id" });
                objectStore.createIndex('fieldName', 'fieldName', { unique: false });
            }
            if (!db.objectStoreNames.contains("EmoDB")) {
                // 数据库不存在,可以在此处创建对象存储空间
                let objectStoreSec = db.createObjectStore('EmoDB', { keyPath: 'id' });
                // 创建索引
                objectStoreSec.createIndex('fieldName', 'fieldName', { unique: false });
            }
        };
        openpic.onsuccess = function(event) {
            let db = event.target.result;
            // 查询数据
            let queryTransaction = db.transaction(['storeName']);
            let queryObjectStore = queryTransaction.objectStore('storeName');
            let query = queryObjectStore.get(1);
            query.onsuccess = function(event) {
                //转换透明度的数值
                let BackimagePrintPlanNum=(Math.round(Number(100-(localStorage.canseenunber*100))*255/100).toString(16))
                if(BackimagePrintPlanNum==="0"&&localStorage.canseenunber==="0"){BackimagePrintPlanNum=""}
                if (localStorage.PrintPicOpen==="false"){//如果用户选择不渲染图片背景
                    bac.setAttribute("style",`background-color:${localStorage.BackGroundColor};`)
                }else{
                    if(event.target.result.name==="空"&&localStorage.localpiclod === "1"){//如果数据库没有本地图片数据
                        console.log('图片对象', event.target.result.name);
                        console.log('数据库无图片相关内容存储');
                        if(localStorage.printToBack==="1"){
                            alert('数据库无图片相关内容存储,将加载在线图片,请在设置添加本地图片')//如果数据库没有本地图片数据且选择渲染本地图片
                            bac.setAttribute('style', `background-color:${localStorage.BackGroundColor};background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-image: url(${localStorage.webimgsrc}); background-repeat: no-repeat; background-size:${localHightSize} ${localWidthSize};  background-attachment:fixed;`);
                            addtarge.setAttribute('style', `background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-color: ${localStorage.BackGroundColor}${BackimagePrintPlanNum};background-repeat: no-repeat;background-size:cover;display: flex;align-items: center;justify-content: center;position: fixed;pointer-events: none;z-index:0;height:100%;width:100%;`);
                        }else if(localStorage.printToBBS==="1"){
                            alert('数据库无图片相关内容存储,将加载在线图片,请在设置添加本地图片')//如果数据库没有本地图片数据且选择渲染本地图片
                            BBSmsgBack.setAttribute('style', `background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-image: url(${localStorage.webimgsrc}); background-repeat: no-repeat; background-size:${localHightSize} ${localWidthSize}; background-attachment:fixed;`);
                            Fromer.setAttribute('style', `background-color: ${localStorage.BackGroundColor}${BackimagePrintPlanNum};${(()=>{if(!nowurl.includes('https://boyshelpboys.com/chat.htm')){return 'background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed;background-repeat: no-repeat;background-size:cover;display: flex;align-items: center;justify-content: center;position: fixed;pointer-events: none;z-index:0;height:100%;width:100%;'}else{return '';}})()}`);
                        }
                    }else if(localStorage.webpiclod === "1"){
                        if(localStorage.printToBack==="1"){
                            //通过section写入项目留下的标签实现颜色覆盖
                            bac.setAttribute('style', `background-color:${localStorage.BackGroundColor};background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-image: url(${localStorage.webimgsrc}); background-repeat: no-repeat; background-size:${localHightSize} ${localWidthSize}; background-attachment:fixed;`);
                            addtarge.setAttribute('style', `background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-color: ${localStorage.BackGroundColor}${BackimagePrintPlanNum};background-repeat: no-repeat;background-size:cover;display: flex;align-items: center;justify-content: center;position: fixed;pointer-events: none;z-index:0;height:100%;width:100%;`);
                        }else if(localStorage.printToBBS==="1"){
                            BBSmsgBack.setAttribute('style', `background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-image: url(${localStorage.webimgsrc}); background-repeat: no-repeat; background-size:${localHightSize} ${localWidthSize}; b background-attachment:fixed;`);
                            Fromer.setAttribute('style', `background-color: ${localStorage.BackGroundColor}${BackimagePrintPlanNum};${(()=>{if(!nowurl.includes('https://boyshelpboys.com/chat.htm')){return 'background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed;background-repeat: no-repeat;background-size:cover;display: flex;align-items: center;justify-content: center;position: fixed;pointer-events: none;z-index:0;height:100%;width:100%;'}else{return '';}})()}`);
                        }
                    }else if(localStorage.localpiclod === "1"){
                        if(localStorage.printToBack==="1"){
                            bac.setAttribute('style', `background-color:${localStorage.BackGroundColor};background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-image: url(${event.target.result.name});background-repeat: no-repeat; background-size:${localHightSize} ${localWidthSize};  background-attachment:fixed;`)
                            addtarge.setAttribute('style', `background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-color: ${localStorage.BackGroundColor}${BackimagePrintPlanNum};background-repeat: no-repeat;background-size:cover;display: flex;align-items: center;justify-content: center;position: fixed;pointer-events: none;z-index:0;height:100%;width:100%; `);
                        }else if(localStorage.printToBBS==="1"){
                            BBSmsgBack.setAttribute('style', `background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed; background-image: url(${event.target.result.name});background-repeat: no-repeat; background-size:${localHightSize} ${localWidthSize};background-attachment:fixed;`)
                            Fromer.setAttribute('style', `background-color: ${localStorage.BackGroundColor}${BackimagePrintPlanNum};${(()=>{if(!nowurl.includes('https://boyshelpboys.com/chat.htm')){return 'background-position:${localStorage.centerPosition}${BackTop} ${Backleft};  background-attachment:fixed;background-repeat: no-repeat;background-size:cover;display: flex;align-items: center;justify-content: center;position: fixed;pointer-events: none;z-index:0;height:100%;width:100%;'}else{return '';}})()}`);
                        }
                    }
                }
            }
            db.close();
        }
    }
    function checkPrint() {//验证用户选择的渲染方式
        let printSelcetBox=document.querySelector("#selectBox");
        if(printSelcetBox.value!=="default"){
            document.querySelector("#top").disabled=true;
            document.querySelector("#left").disabled=true;
            document.querySelector("#widthsize").disabled=true;
            document.querySelector("#heightsize").disabled=true;
        }else if(printSelcetBox.value==="default"){
            document.querySelector("#top").disabled=false;
            document.querySelector("#left").disabled=false;
            document.querySelector("#widthsize").disabled=false;
            document.querySelector("#heightsize").disabled=false;
        }
    }
    function addsett(leange1,leange2,CheckUpdate) {//添加设置项目
        let BoxPrintCheckOn;
        if(localStorage.BoxPrint!=="no"){BoxPrintCheckOn='checked'}else{BoxPrintCheckOn=''}
        let oldaddtarge=document.querySelector("#navbar-collapse")
        let addbott="<button class='fuckyou'>插件设置</button>"
        let addNetMsg=`<div id="MegNew">
        <div style="z-index:10001; position: sticky ;height:28px;width:100%;top: 0;left:0;background-color: rgba(36,70,88,0.4);backdrop-filter: blur(5px);">
    <button id="Msgexit" class="fuckyou3">X</button><span>反馈方式&更新日志</span>
    </div>
    <div style="z-index:10001; position: sticky ;height:auto;width:100%;right: 0;left:0;top: 30px">
    <p>可以通过以下方式向我反馈:<br> 在此链接下面回复BUG(推荐):<a href="https://boyshelpboys.com/thread-2012.htm">BHB聊天室背景更换</a><br>前往GitHub仓库提交issue:<a href="https://github.com/M27-IAR/BHB_BbsBackGroundSetting/issues">GitHub仓库</a><br>私信我修改(不推荐)<a href="https://boyshelpboys.com/user-139020.htm">点击我进入后点击“发私信按钮”</a></p>
</div>
<div>
<strong>当前版本为v3.0.12:</strong> <div style="border-bottom: white 3px solid;height: 0;width: 100%"></div>
<p>v3.0.12更新:<br>修复了样式表插入错误的问题<br>修复聊天室气泡磨砂效果失效问题<br>添加了帖子页面图片大图展示的功能<br>【新聊天室暂时搁置】</p>
<p>完整更新日志请前往以下帖子查看:<a href="https://boyshelpboys.com/thread-2012.htm">BHB聊天室背景更换</a></p>
<p>脚本作者:M27IAR</p>
</div>`
        let addmain=`<div id="localsett" >
<div >
<div style="position: sticky ;height:28px;width:100%;top: 0;left:0;background-color: rgba(36,70,88,0.4);backdrop-filter: blur(5px);">
    <button id="exit" class="fuckyou3">X</button><span>插件设置</span>
    </div>
<div>
<span>若出现无法正常使用的情况请清理浏览器缓存后重试</span><button class='fuckyou' style="padding: 0.125rem 0" id='newmsg'>反馈方式&更新日志</button><br>
<input type="checkbox" style="user-select:none;-moz-user-select: none; " name="MsgLightCheck" id="MsgLightCheck" ${(()=>{if(localStorage.MsgLightCheckX==="true"){return "checked"}else{return ""}})()}><label for="MsgLightCheck">启用指示灯</label>
<input style="user-select:none;-moz-user-select: none;" class="SettiingInput" type="checkbox" ${leadermanhide} value="leadermanhide" name="leadermanhide" id="leadermanhide"><label for="leadermanhide">${leange1[1]}</label>
<input style="user-select:none;-moz-user-select: none;" class="SettiingInput" type="checkbox" ${Scrollstylex} name="ScrollSett" id="ScrollSett">${leange2[0]}</input><br>
<div id="PrintPicCheck" style="width:100%;background-color: rgba(36,70,88,0.4);border:1px solid aqua;display: flex;">
<div style="width:5%;${(()=>{if(localStorage.PrintPicplanChk!=="false"){return 'transform: rotate(90deg);'}else{return 'transform: rotate(0deg);'}})()};" id="UnderIcon1">></div><input style="display:none;" ${(function (){if (localStorage.PrintPicplanChk!=="false"){return "checked";}else{return "";}})()} type="checkbox" class="SettiingInput" name="PrintPicplan" id="PrintPicplan" value="PrintPicplan"><label id="PrintPicplanLabel" for="PrintPicplan" style="margin:0;user-select:none;-moz-user-select:none;width: 90%;">图像背景</label>
</div>
<div id="PrintPicBox" style="${(()=>{if (localStorage.PrintPicplanChk!=="false"){return "display:block;";}else{return "display:none;";}})()}">
<input  ${(()=>{if (localStorage.PrintPicOpen!=="false"){return "checked";}else{return "";}})()} type="checkbox" class="SettiingInput" name="PrintPic" id="PrintPic" value="PrintPicplan"><label id="PrintPicplanLabel" for="PrintPic" style="margin:0;user-select:none;-moz-user-select:none;width: auto;">启用图像背景</label><span>&nbsp;背景色</span><input class="SettiingInput ColorSettinr" type="color" id="BackGroundColor" value="${localStorage.BackGroundColor}"><br>
<input class="SettiingInput" type='radio'  name='picloadsele' ${localpiclod} id='localpicon' value="localpicon"  width='100px'><label style="user-select:none;-moz-user-select:none;" for="localpicon">${leange1[10]}</label>
<input class="SettiingInput" type='file' id='webimgsrc' accept='image/*' style='width:50%;'><br> 
<input class="SettiingInput" type='radio' ${webpiclod} name='picloadsele' id='webpicon'  width='100px' value="webpicon"> <label style="user-select:none;-moz-user-select:none;" for="webpicon">${leange1[9]}</label>
<span>${leange1[0]}</span><input class="SettiingInput" type='text'  value='${localStorage.webimgsrc}' name='' id='localimgsrc' style="width:50%;"><br>
<input class="SettiingInput" type='radio' value='1' ${PrintToBackground} name='baklocal' id='printToWebback' value="printToWebback"  width='100px'><label style="user-select:none;-moz-user-select:none;" for="printToWebback">${leange1[13]}</label>
<input class="SettiingInput" type='radio' value='printToBBS' name='baklocal' ${PrintToBBSGround} id='printToBBS'  width='100px'><label style="user-select:none;-moz-user-select:none;" for="printToBBS">${leange1[14]}</label><br>
<span>背景图片透明度</span><input class="SettiingInput RangeSetting" type="range" min="0" max="1" step="0.01" value="${localStorage.canseenunber}" id="notseenumber"><br>
</div>
<hr  id="MsgUrlAddLine">
<div id="IdPrintCheck" style="width:100%;background-color: rgba(36,70,88,0.4);border:1px solid aqua;display: flex;">
<div style="width:5%;${(()=>{if(localStorage.IdPrintCheck!=="false"){return 'transform: rotate(90deg);'}else{return 'transform: rotate(0deg);'}})()};" id="UnderIcon2">></div><input style="display:none;" type="checkbox" class="SettiingInput" name="OpneIDPrint" id="OpenIdPrint" ${(function (){if (localStorage.IdPrintCheck!=="false"){return "checked";}else{return "";}})()}><label style="user-select:none;-moz-user-select:none;width: 90%;margin:0;" for="OpenIdPrint">Id名称渲染</label>
</div>
<hr>
<div id="IdPrintBox" style="${(()=>{if (localStorage.IdPrintCheck!=="false"){return "display:block;";}else{return "display:none;";}})()}">
<span>${leange1[2]}</span><input class="SettiingInput" type='text' onblur='if(!((/[(0-9)]/).test(value)))value=18' value='${localStorage.NameFontSize}' name='size' id='size' size="5"><br>
<span>${leange1[3]}</span>
<input class="SettiingInput ColorSettinr" type="color" id="fontcolor" value="${localStorage.LocalFontColor}"><input class="SettiingInput ColorSettinr"  type="color" id="fontcolorsec" value="${localStorage.LocalFontColorsec}"><br>
<span>${leange1[4]}</span><input class="SettiingInput" type="text" onblur='if(!((/[(0-9)]/).test(value)))value=1' size="5"  value="${localStorage.BorderTextSize}"  name="BorderText" id="BorderText"><br>
</div>
<hr>
<div id="PrintPlanCheck" style="width:100%;background-color: rgba(36,70,88,0.4);border:1px solid aqua;display: flex;">
<div style="width:5%;${(()=>{if(localStorage.PrintPlanCheck!=="false"){return 'transform: rotate(90deg);'}else{return 'transform: rotate(0deg);'}})()};" id="UnderIcon3">></div><input style="display:none;" type="checkbox" class="SettiingInput" name="PrintPlan" id="PrintPlan" ${(function (){if (localStorage.PrintPlanCheck!=="false"){return "checked";}else{return "";}})()}><label style="user-select:none;-moz-user-select:none;width: 90%;margin:0;" for="PrintPlan">渲染定位</label>
</div>
<div id="PrintPlanBox" style="${(()=>{if (localStorage.PrintPlanCheck!=="false"){return "display:block;";}else{return "display:none;";}})()}">
<span>图像渲染方式</span><select style="padding:0;" name="selectBox" id="selectBox"><option value="default" ${(function(){if(BackPrintSelectBox==="default"){return "selected";}})()}>自定义</option><option value="PicFirst" ${(function(){if(BackPrintSelectBox==="PicFirst"){return "selected";}})()}>图像尺寸优先</option><option value="WebFirst" ${(function(){if(BackPrintSelectBox==="WebFirst"){return "selected";}})()}>网站尺寸优先</option></select>
<input class="SettiingInput" type="checkbox" id="center" ${(function (){if (localStorage.centerPosition!==""){return "checked";}else{return "";}})()}  value="center"><label for="center">居中渲染</label><br>
<span>${leange1[5]}</span><input class="SettiingInput" type='text'  oninput='if(!((/[(0-9)/-]/).test(value)))value=0' value='${localStorage.top}' name='topp' id='top' size="5"> <span>${leange1[6]}</span>
<input class="SettiingInput" type='text' oninput='if(!((/[(0-9)/-]/).test(value)))value=0' value='${localStorage.left}' name='leftt' id='left' size="5"><br> <span>${leange1[7]}</span>
<input class="SettiingInput" type='text' onblur='if(!((/[(0-9)]/).test(value))&&value!=="auto")value=100' min='0'  value='${localStorage.widthsize}' name='' id='widthsize' size='5'><br>
<span>${leange1[8]}</span><input class="SettiingInput" type='text' onblur='if(!((/[(0-9)]/).test(value))&&value!=="auto")value=100'  min='0' value=${localStorage.heightsize} name='' id='heightsize' size="5"><hr>
</div>
<hr>
<div id="PrintVisableCheck" style="width:100%;background-color: rgba(36,70,88,0.4);border:1px solid aqua;display: flex;">
<div style="width:5%;${(()=>{if(localStorage.PrintVisable!=="false"){return 'transform: rotate(90deg);'}else{return 'transform: rotate(0deg);'}})()};" id="UnderIcon4">></div><input style="display:none;" type="checkbox" class="SettiingInput" name="PrintVisable" id="PrintVisable" ${(function (){if (localStorage.PrintVisable!=="false"){return "checked";}else{return "";}})()}><label style="user-select:none;-moz-user-select:none;width: 90%;margin:0;" for="PrintVisable">特殊效果</label>
</div>
<div id="BoxPrintSet" style="${(()=>{if (localStorage.PrintVisable!=="false"){return "display:block;";}else{return "display:none;";}})()}">
<input class="SettiingInput" type="checkbox" name="BoxPrintEn" id="BoxPrintEn" value="BoxPrintEn" ${BoxPrintCheckOn}><label for="BoxPrintEn">启用方块特效</label><br>
<span>背景方格大小</span><input class="SettiingInput RangeSetting" type="range" min="50" max="150" step="1" onchange='localStorage.BoxSize=value' value="${localStorage.BoxSize}" id="BoxSizeNum"><br>
<span>边框线设置</span><input class="SettiingInput ColorSettinr" type="color" id="BoxBorderColor" onchange="localStorage.BoxBorderColor=value" value="${localStorage.BoxBorderColor}"><input class="SettiingInput RangeSetting" type="range" min="0" max="99" step="1" onchange='localStorage.BoxBorderCansee=value' value="${localStorage.BoxBorderCansee}" id="BoxPrintCansee"><br>
<span>方片颜色</span><input class="SettiingInput ColorSettinr" type="color" id="BoxColor" onchange="localStorage.BoxColor=value" value="${localStorage.BoxColor}">
</div>
<hr>
<div id="PrintPlanCheck" style="width:100%;background-color: rgba(36,70,88,0.4);border:1px solid aqua;display: flex;">
<div style="width:5%;${(()=>{if(localStorage.TransparencySet!=="false"){return 'transform: rotate(90deg);'}else{return 'transform: rotate(0deg);'}})()};" id="UnderIcon5">></div><input style="display:none;" type="checkbox" class="SettiingInput" name="TransparencySet" id="TransparencySet" ${(function (){if (localStorage.TransparencySet!=="false"){return "checked";}else{return "";}})()}><label style="user-select:none;-moz-user-select:none;width: 90%;margin:0;" for="TransparencySet">透明度设置</label>
</div>
<div id="cantseegive" style="${(()=>{if (localStorage.TransparencySet!=="false"){return "display:block;";}else{return "display:none;";}})()}">
<span>${leange2[1]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum1" value="${Math.ceil((Number("0x"+localStorage.CantSeeset1).toString(10))*100/255)}"><input class="SettiingInput  ColorSettinr" type="color" id="Msgcolor1" value="${localStorage.CantSeeColor1}"><br>
<span style="display: none">${leange2[2]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum2" style="display: none" value="${Math.ceil((Number("0x"+localStorage.CantSeeset3).toString(10))*100/255)}"><input style="display: none" class="SettiingInput ColorSettinr" type="color" id="Msgcolor2" value="${localStorage.CantSeeColor3}">
<span>${leange2[3]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum3" value="${Math.ceil((Number("0x"+localStorage.CantSeeset3).toString(10))*100/255)}"><input class="SettiingInput ColorSettinr" type="color" id="Msgcolor3" value="${localStorage.CantSeeColor3}"><br>
<span>${leange2[4]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum4" value="${Math.ceil((Number("0x"+localStorage.CantSeeset4).toString(10))*100/255)}"><input class="SettiingInput ColorSettinr" type="color" id="Msgcolor4" value="${localStorage.CantSeeColor4}"><br>
<span>${leange2[5]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum5" value="${Math.ceil((Number("0x"+localStorage.CantSeeset5).toString(10))*100/255)}"><input class="SettiingInput ColorSettinr" type="color" id="Msgcolor5" value="${localStorage.CantSeeColor5}"><br>
<span>${leange2[6]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum6" value="${Math.ceil((Number("0x"+localStorage.CantSeeset6).toString(10))*100/255)}"><input class="SettiingInput ColorSettinr" type="color" id="Msgcolor6" value="${localStorage.CantSeeColor6}"><br>
<span>${leange2[7]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum7" value="${Math.ceil((Number("0x"+localStorage.CantSeeset7).toString(10))*100/255)}"><input class="SettiingInput ColorSettinr" type="color" id="Msgcolor7" value="${localStorage.CantSeeColor7}"><br>
<span>${leange2[8]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum8" value="${Math.ceil((Number("0x"+localStorage.CantSeeset8).toString(10))*100/255)}"><input class="SettiingInput ColorSettinr" type="color" id="Msgcolor8" value="${localStorage.CantSeeColor8}"><br>
<span>${leange2[9]}</span><input class="SettiingInput RangeSetting" type="range" id="MsgSeeNum9" value="${Math.ceil((Number("0x"+localStorage.CantSeeset9).toString(10))*100/255)}"><input class="SettiingInput ColorSettinr" type="color" id="Msgcolor9" value="${localStorage.CantSeeColor9}"><br>
<br><button id="reall"  class="fuckyou2">重置颜色|透明度配置</button></div>
<hr>
<button class='fuckyou2' id='save' type="submit">提交</button>
</div>`

        oldaddtarge.insertAdjacentHTML("afterbegin",addbott);
        bac.insertAdjacentHTML("afterbegin",addmain);
        bac.insertAdjacentHTML("afterbegin",addNetMsg)

        let addbutt=document.querySelector("#navbar-collapse > button");
        let adddiv=document.querySelector("#localsett");
        let addaddNetMsg=document.querySelector("#MegNew");
        checkPrint();
        let printSelcetBox=document.querySelector("#selectBox");

        printSelcetBox.addEventListener("change",function(){checkPrint();})
        console.log(CheckUpdate)
        adddiv.setAttribute('style', 'position: fixed;left:50%;top:50%;overflow:auto; border-radius: 5px;transform: translate(-50%, -50%);width: 330px;height: 550px;border: 1px solid aqua;z-index:10000;display:none;background-color:rgba(40,64,120,0.4);color:#f0f5f9;text-shadow:0 1px 0.5px #32353E,0 -1px 0.5px #32353E,1px 0 0.5px #32353E,-1px 0 0.5px #32353E;')
        addaddNetMsg.setAttribute('style', `position: fixed;left:50%;top:50%;overflow:auto; border-radius: 5px;transform: translate(-50%, -50%);width: 330px;height: 550px;border: 1px solid aqua;z-index:10000;display:${(()=>{if(CheckUpdate){return "block"}else{return "none"}})()};background-color:rgba(40,64,120,0.4);color:#f0f5f9;text-shadow:0 1px 0.5px #32353E,0 -1px 0.5px #32353E,1px 0 0.5px #32353E,-1px 0 0.5px #32353E;`)
        addbutt.addEventListener("click",function(){//开关设置栏1
            let adddiv=document.querySelector("#localsett")
            if (adddiv.style.display==="block"){
                adddiv.style.display="none";
            }else{
                adddiv.style.display="block";
            }
        });

        document.querySelector("#newmsg").addEventListener("click",function(){
            let addaddNetMsg=document.querySelector("#MegNew");
            if (addaddNetMsg.style.display==="block"){
                addaddNetMsg.style.display="none";
                adddiv.style.display="block";
            }else{
                addaddNetMsg.style.display="block";
                adddiv.style.display="none";
            }
        })
        document.querySelector("#Msgexit").addEventListener("click",function(){{addaddNetMsg.style.display="none";adddiv.style.display="block";}})


        document.querySelector("#OpenIdPrint").addEventListener("click",function(e){
            if (e.target.checked){
                document.querySelector("#IdPrintBox").style.display="block";
                document.querySelector("#UnderIcon2").style.transform="rotate(90deg)";
            }else{
                document.querySelector("#IdPrintBox").style.display="none";
                document.querySelector("#UnderIcon2").style.transform="rotate(0deg)";
            }
        })
        document.querySelector("#PrintPicplan").addEventListener("click",function(e) {
            if (e.target.checked){
                document.querySelector("#PrintPicBox").style.display="block";
                document.querySelector("#UnderIcon1").style.transform="rotate(90deg)";
            }else{
                document.querySelector("#PrintPicBox").style.display="none";
                document.querySelector("#UnderIcon1").style.transform="rotate(0deg)";
            }
        })
        document.querySelector("#PrintPlan").addEventListener("click",function(e) {
            if (e.target.checked){
                document.querySelector("#PrintPlanBox").style.display="block";
                document.querySelector("#UnderIcon3").style.transform="rotate(90deg)";
            }else{
                document.querySelector("#PrintPlanBox").style.display="none";
                document.querySelector("#UnderIcon3").style.transform="rotate(0deg)";
            }
        })
        document.querySelector("#PrintVisable").addEventListener("click",function(e) {
            if (e.target.checked){
                document.querySelector("#BoxPrintSet").style.display="block";
                document.querySelector("#UnderIcon4").style.transform="rotate(90deg)";
            }else{
                document.querySelector("#BoxPrintSet").style.display="none";
                document.querySelector("#UnderIcon4").style.transform="rotate(0deg)";
            }
        })
        document.querySelector("#TransparencySet").addEventListener("click",function(e) {
            if (e.target.checked){
                document.querySelector("#cantseegive").style.display="block";
                document.querySelector("#UnderIcon5").style.transform="rotate(90deg)";
            }else{
                document.querySelector("#cantseegive").style.display="none";
                document.querySelector("#UnderIcon5").style.transform="rotate(0deg)";
            }
        })
        document.querySelector("#BoxPrintEn").addEventListener("click",(e)=> {
            if (e.target.checked){
                localStorage.setItem("BoxPrint","yes");
            }else{
                localStorage.setItem("BoxPrint","no");
            }
        })

        let ScrollSettButt=document.querySelector("#ScrollSett")
        ScrollSettButt.addEventListener("click",function () {SetScroll()})
        let exitbutt=document.querySelector("#exit")//设置的关闭按钮1
        exitbutt.addEventListener("click",function(){adddiv.style.display="none";})//设置的关闭按钮实现1

        let localget=document.querySelector("#save");
        localget.addEventListener("click",addtolocal,false);//点击向localst保存数据
    }

    function ResetSeenum() {//重置透明度
        localStorage.setItem("CantSeeset1","00");
        localStorage.setItem("CantSeeset3","00");
        localStorage.setItem("CantSeeset4","20");
        localStorage.setItem("CantSeeset5","20");
        localStorage.setItem("CantSeeset6","FF");
        localStorage.setItem("CantSeeset7","20");
        localStorage.setItem("CantSeeset8","50");
        localStorage.setItem("CantSeeset9","20");
        localStorage.setItem("CantSeeColor1","#2b2c40");
        localStorage.setItem("CantSeeColor3","#2b2c40");
        localStorage.setItem("CantSeeColor4","#2b2c40");
        localStorage.setItem("CantSeeColor5","#2b2c40");
        localStorage.setItem("CantSeeColor6","#2b2c40");
        localStorage.setItem("CantSeeColor7","#2b2c40");
        localStorage.setItem("CantSeeColor8","#66ccff");
        localStorage.setItem("CantSeeColor9","#2b2c40");
    }
    let nedAddStyle=document.createTextNode(`*{scrollbar-width:none !important; } @media(min-width: 768px) {::-webkit-scrollbar {width: 0px; height: 6px;border-radius: 20px;}::-webkit-scrollbar-track { background: var(--bs-body-bg);}::-webkit-scrollbar-thumb {background: var(--bs-secondary);border-radius: 20px;}::-webkit-scrollbar-thumb:hover {background: var(--bs-primary);}::-webkit-scrollbar-thumb:focus, ::-webkit-scrollbar-thumb:active {background: var(--bs-primary-active);}}`)
    let AddStylesec=document.createTextNode(`@media(min-width: 768px) {::-webkit-scrollbar {width: 3px; height: 6px;border-radius: 20px;}::-webkit-scrollbar-track { background: var(--bs-body-bg);}::-webkit-scrollbar-thumb {background: var(--bs-secondary);border-radius: 20px;}::-webkit-scrollbar-thumb:hover {background: var(--bs-primary);}::-webkit-scrollbar-thumb:focus, ::-webkit-scrollbar-thumb:active {background: var(--bs-primary-active);}} `)

    function ScrollHidden() {//滚动条调整
        let NeedFixStyle=document.querySelectorAll("style");//修改滚动条状态
        NeedFixStyle[NeedFixStyle.length-1].insertAdjacentHTML("afterend",'<style id="style2"></style>');
        let FixStyle=document.querySelector("#style2")
        if (localStorage.scrollstyle==="1"){
            FixStyle.appendChild(nedAddStyle);
        }else{
            FixStyle.appendChild(AddStylesec);
        }
    }
    function SetScroll() {//滚动条样式调整
        let FixStyle=document.querySelector("#style2")
        if (FixStyle.innerHTML==""){
            localStorage.setItem("scrollstyle","1")
            FixStyle.appendChild(nedAddStyle);
        }else{
            localStorage.setItem("scrollstyle","0")
            FixStyle.innerHTML=""
        }
    }
    function leftContentContent() {//左侧栏交互修改
        let TrackerLine=document.querySelectorAll("#layout-menu > nav > ul>li");
        for (let i=0; i<TrackerLine.length; i++) {
            if(i!==TrackerLine.length-1){
            }
            TrackerLine[i].addEventListener('mouseenter', ()=> {
                TrackerLine[i].style.backgroundColor=`${ContentColor}90`;
                TrackerLine[i].style.color="#ffffff";
                TrackerLine[i].querySelector("a").style.color="#ffffff";
            })
            TrackerLine[i].addEventListener('mouseleave', ()=> {
                TrackerLine[i].style.backgroundColor="#00000000";
                TrackerLine[i].querySelector("a").style.color="#a3a4cc"
            })
            TrackerLine[i].addEventListener('click', ()=> {
                TrackerLine[i].style.backgroundColor=`${ContentColor}`;
                TrackerLine[i].style.color="#ffffff";
            })
        }
    }
    function rePrint(webWidth,webHeight) {//绘制启用方格特效时所需方格
        if(localStorage.BoxPrint==="yes"){
            let RGBRed=Number("0x"+localStorage.BoxColor.substring(1,3)),RGBGreen=Number("0x"+localStorage.BoxColor.substring(3,5)),RGBBlue=Number("0x"+localStorage.BoxColor.substring(5))
            printNunber=(Math.ceil((webHeight*1.2)/DIVboxsize))*(Math.ceil(webWidth/DIVboxsize));
            DIVmax.innerHTML="";
            for(let i=0;i<=printNunber;i++){
                let ansRandom=Math.floor((Math.random()*40+10));
                if(ansRandom===0){ansRandom="";}
                let addDIV=`<div id="PrintDIV${i}" class="M27flexDivSet"></div>`
                DIVmax.insertAdjacentHTML("beforeend",addDIV);
                let strDIV=document.querySelector(`#PrintDIV${i}`);
                strDIV.setAttribute("style",`background-color: rgba(${RGBRed},${RGBGreen},${RGBBlue},0.${ansRandom});order: ${i};`);

            }
        }else{
        }
    }
    function changeBackground(){//设置方格定时刷新效果
        let j=0,x=100
        let RGBRed=Number("0x"+localStorage.BoxColor.substring(1,3)),RGBGreen=Number("0x"+localStorage.BoxColor.substring(3,5)),RGBBlue=Number("0x"+localStorage.BoxColor.substring(5))

        for(let i=0;i<=Math.ceil(printNunber*0.5);i++){

            setTimeout(function(){
                let id=Math.floor((Math.random()*printNunber+1))
                if(typeof (arr[i])=="undefined"){
                    arr[i]=id;
                }else{
                    for (let j=0;j<arr[i].length;j++){
                        if(arr[j]===id){
                            while(arr[j]!==id){
                                id=Math.floor((Math.random()*(printNunber+1)))
                            }
                            arr[j]=id;
                        }else{
                            arr[j]=id;
                        }
                    }
                }
                let strDIV=document.querySelector(`#PrintDIV${id}`);
                strDIV.setAttribute("style",`background-color: rgba(${RGBRed},${RGBGreen},${RGBBlue},0.${Math.floor((Math.random()*60+10))});order: ${id};`)

            },x)
            j++
            if(j===10){
                x=x+100
                j=0
            }

        }

    }
    //数据库创建
    let request = indexedDB.open('databaseName', 6);
    // 处理数据库升级
    request.onupgradeneeded = function(event) {
        let db = event.target.result;
        // 创建对象存储(表)并设置主键
        if (!db.objectStoreNames.contains("storeName")) {
            // 数据库不存在,可以在此处创建对象存储空间
            let objectStore = db.createObjectStore("storeName", { keyPath: "id" });
            objectStore.createIndex('fieldName', 'fieldName', { unique: false });
        }
        if (!db.objectStoreNames.contains("EmoDB")) {
            // 数据库不存在,可以在此处创建对象存储空间
            let objectStoreSec = db.createObjectStore('EmoDB', { keyPath: 'id' });
            // 创建索引
            objectStoreSec.createIndex('fieldName', 'fieldName', { unique: false });
        }

    };
    // 数据库打开成功时的回调
    request.onsuccess = function(event) {
        let db= event.target.result;
        // 进行事务操作
        let transaction = db.transaction('storeName', 'readwrite');
        let objectStore = transaction.objectStore('storeName');
        // 插入数据
        objectStore.add({ id: 1, name:'空'});
        transaction.oncomplete = function() {
            console.log('空数据插入DBD成功');
        };
        transaction.onerror = function(event) {
            console.error('Transaction failed:', event);
        };
    };
    // 错误处理
    request.onerror = function(event) {
        console.error('Database error:', event.target.error);
    };
    //初始值部分结束
    let UserListCompCheck=true;
    let TimeOutSet=3000;//超时设定
    let WebGetJSON;//获取的在线列表
    let OnliceUserNum=0;//在线人数计数
    let OnlineUserListJSON;//本地在线列表
    let OldOnlineUserListJSON=[];//历史在线列表,用于比对
    function GetOnliceAndPrint() {//在线用户相关修改
        let ListJsonUserName
        let ListJson
        let UploadCheck=false;
        OnlineUserListJSON=[];
        OnliceUserNum=0;
        for (let i=0;i<WebGetJSON.length;i++){//插入用户数据
            if(WebGetJSON[i][Object.keys(WebGetJSON[i])[0]].isOnline===true){
                OnlineUserListJSON.splice(0,0,WebGetJSON[i]);
            }
        }
        if(OldOnlineUserListJSON.length!==OnlineUserListJSON.length){
            UploadCheck=true
        }else{
            for(let i=0;i<OnlineUserListJSON.length;i++){
                if(Object.keys(OldOnlineUserListJSON[i]).toString()!==Object.keys(OnlineUserListJSON[i]).toString()){
                    UploadCheck=true;
                    break;
                }
            }
        }
        //更新则写入
        if(OnlineUserListJSON.length>0&&UploadCheck){//验证是否为空
            let AddOnLice=document.querySelector("#M27CHANGE");
            AddOnLice.innerHTML=""
            for (let i=0;i<OnlineUserListJSON.length;i++){//插入用户数据
                OnliceUserNum+=1//在线人数计数器
                ListJsonUserName=Object.keys(OnlineUserListJSON[i])//人员ID
                ListJson=OnlineUserListJSON[i]//人员信息
                let UID=ListJson[ListJsonUserName].avatar.substring(ListJson[ListJsonUserName].avatar.lastIndexOf("/")+1,ListJson[ListJsonUserName].avatar.lastIndexOf("."))
                //添加显示信息
                AddOnLice.insertAdjacentHTML("beforeend",`<div class="online-user-item" id="M27-${ListJsonUserName}">
                    <div class="avatar">
                        <img data-UID="${UID}" src="${ListJson[ListJsonUserName].avatar}" alt="${ListJsonUserName}" onerror="this.src='./plugin/msto_chat/assets/default-avatar.png'">
                    </div>
                    <div class="user-info">
                        <h6 class="username">${ListJsonUserName}</h6>
                        <span style="font-size: 10px">最后在线时间:${(new Date((OnlineUserListJSON[i][Object.keys(OnlineUserListJSON[i])[0]].lastActive)*1000)).toString().slice(16,25)}</span>
                    </div>
                    </div>
                `)
            }
        }else{
            for(let i=0;i<OldOnlineUserListJSON.length;i++){//写入时间
                OnliceUserNum+=1//在线人数计数器
                ListJsonUserName=Object.keys(OldOnlineUserListJSON[i])//人员ID
                ListJson=OldOnlineUserListJSON[i]//人员信息
                //更新在线时间
                document.querySelector(`#M27-${ListJsonUserName}>div.user-info>span`).innerHTML=`最后在线时间:${(new Date((OnlineUserListJSON[i][Object.keys(OnlineUserListJSON[i])[0]].lastActive)*1000)).toString().slice(16,25)}`
            }
        }
        document.querySelector('#M27UserNun').innerText=OnliceUserNum
            OldOnlineUserListJSON=OnlineUserListJSON//更新旧数组
    }
    function GetServerStation(MsgLight,MsgPrint) {//信号灯|在线用户部分数据修改
        let nowTime,Time;
        if(UserListCompCheck){
            UserListCompCheck=false;
        $.ajax({//获取服务器状态
                type:"GET",
                url: `https://boyshelpboys.com/plugin/msto_chat/route/app/ajax.php?c=msg&type=signal`,
                async:true,
                timeout:TimeOutSet,
                beforeSend:function(){nowTime=Date.now();},
                complete:function(date,xhr){
                    Time=Date.now();
                    let ReportCode=date.status;
                    if((Time-nowTime)>=TimeOutSet){
                        MsgLight.style.backgroundColor="red";
                        MsgLight.style.boxShadow= "0px 1px 10px #F60303,0px -1px 10px #F60303,1px 0px 10px #F60303,-1px 0px 10px #F60303";
                        MsgLight.style.border="1px solid #F60303";
                        MsgLight.className="linkBadWeb";
                        MsgPrint.innerHTML=`当前收信延迟:${Time-nowTime}<br>收信延迟过高`;
                        TimeOutSet=TimeOutSet+1000;
                        UserListCompCheck=true;
                    }else if(xhr==='success'&&(Time-nowTime>1000)){
                        MsgLight.style.boxShadow= "0px 1px 10px #F6D603,1px 0px 10px #F6D603,-1px 0px 10px #F6D603,0px -1px 10px #F6D603";
                        MsgLight.style.backgroundColor="yellow";
                        MsgLight.style.border="1px solid #F6D603";
                        MsgLight.className="linkOutTime";
                        MsgPrint.innerHTML=`当前收信延迟:${Time-nowTime}<br>网络状态一般`;
                        WebGetJSON=JSON.parse(date.responseText).active_users;
                        GetOnliceAndPrint();
                        TimeOutSet=3000;
                        UserListCompCheck=true;
                    }else if (ReportCode===200&&xhr==="success"){
                        MsgLight.style.backgroundColor="green";
                        MsgLight.style.boxShadow= "0px 1px 10px #77F602,0px -1px 10px #77F602,-1px 0px 10px #77F602,1px 0px 10px #77F602";
                        MsgLight.style.border="1px solid #77F602";
                        MsgLight.className="linkOpen";
                        MsgPrint.innerHTML=`当前收信延迟:${Time-nowTime}<br>网络状态良好`;
                        WebGetJSON=JSON.parse(date.responseText).active_users;
                        GetOnliceAndPrint()
                        TimeOutSet=3000;
                        UserListCompCheck=true;
                    }else if(ReportCode>=400||ReportCode>=500||xhr!=="success"){
                        MsgLight.style.backgroundColor="red";
                        MsgLight.style.boxShadow= "0px 1px 10px #F60303,0px -1px 10px #F60303,1px 0px 10px #F60303,-1px 0px 10px #F60303";
                        MsgLight.style.border="1px solid #F60303";
                        MsgLight.className="linkBadWeb";
                        MsgPrint.innerHTML=`当前收信延迟:${Time-nowTime}<br>但无法正确链接到服务器`;
                    }
                },
                error: function (){
                    MsgLight.style.backgroundColor="red";
                    MsgLight.style.boxShadow= "0px 1px 10px #F60303,0px -1px 10px #F60303,1px 0px 10px #F60303,-1px 0px 10px #F60303";
                    MsgLight.style.border="1px solid red";
                    MsgLight.className="linkBadWeb";
                    MsgPrint.innerHTML=`当前收信延迟:${Time-nowTime}<br>但无法正确链接到服务器`;
                    UserListCompCheck=true;
                },
            })
        }else{
        }
    }
    function MesWebTestPlan(MsgLight,MsgPrint){//信号灯数据获取
        if(document.hasFocus()||localStorage.M27NewBBGPrint==="true"){
            GetServerStation(MsgLight,MsgPrint)
        }else{}
    }
    let PicUrl=[]
    let message;//站长的特殊链接处理
    function renderImage(url, alt = '') {
        return `<img src="${url}" alt="${alt}" referrerpolicy="no-referrer" class="chat-image" style="width: 7.5rem;object-fit: contain;">`;
    }
    const mediaPatterns = [
        // 图片
        {
            regex: /https?:\/\/[^\s<>"']+?\.(?:jpg|jpeg|gif|png|webp|avif)(?:@[^@\s<>"']*)?/gi,
            handler: url => {
                if (!message.includes(`[img]${url}[/img]`)) {
                    // 清理B站图片链接中的参数
                    url = url.replace(/@.*$/, '');
                    return renderImage(url);
                }
                return url;
            }
        },
        // 视频
        {
            regex: /https?:\/\/[^\s<>"']+?\.(?:mp4|webm|ogg)(?:\?[^\s<>"']*)?/gi,
            handler: url => {return `<video controls src="${url}" preload="none" style="max-width:18.75rem; border-radius:5px; margin:5px 0;"></video>`;
            }
        },
        // 音频
        {
            regex: /https?:\/\/[^\s<>"']+?\.(?:mp3|wav|m4a)(?:\?[^\s<>"']*)?/gi,
            handler: url => {return `<audio controls src="${url}" preload="none" style="width:15.625rem; margin:5px 0;"></audio>`}

        },
        // B站视频
        {
            regex: /https?:\/\/(?:www\.)?bilibili\.com\/video\/(BV[\w]+)[^\s<>"']*/g,
            handler: (match, bvid) => {return `<iframe src="//player.bilibili.com/player.html?&bvid=${bvid}&high_quality=1&autoplay=0" allowfullscreen="allowfullscreen" style="width:18.75rem; height:12.5rem; border-radius:5px; margin:5px 0;"></iframe>`}
        },
        // 网易云音乐
        {
            regex: /https?:\/\/music\.163\.com\/song\?id=(\d+)(?:&[^&\s<>"']*)?/g,
            handler: (match, songId)=>{return `<iframe src="//music.163.com/outchain/player?type=2&id=${songId}&auto=0&height=66" style="width:22.5rem; height:5.375rem; margin: 0;"></iframe>`}

        }
    ];

    if (typeof Notification !== 'undefined' && typeof window.Notification !== 'undefined'){
        Notification.requestPermission().then(function(result) {//请求通知权限(哭啦什么都要权限啊
        if (result === 'granted') {
            console.log('允许显示系统通知');
        } else if (result === 'denied') {
            console.log('拒绝显示系统通知');
        } else {
            console.log('默认');
        }
    })
    }else{
        console.log("浏览器不支持Notification")
    }

    let nowurl = window.location.href;//读取当前所在网页

    if (nowurl.includes('https://boyshelpboys.com/chat.htm')) {//如果当前网页为聊天室页面
        WidthHeightSet();
        let printstr1=["线上地址","删除左侧导航栏","聊天室名称大小","聊天室名称字体/描边颜色","聊天室名称描边大小","顶部","左部","背景高度比例(填写0即为auto)","背景宽度比例(填写0即为auto)","在线图片","本地图片","section写入","body-background写入","渲染到网页背景","渲染到聊天室背景"];
        let printstr2=["滚动条不显示","历史记录1透明度","顶栏下部透明度","历史记录2透明度","外层边框透明度","顶栏透明度","发送边框透明度","发送框透明度","发送框描边","'聊天留言'透明度"]
        leftANDtop();
        ScrollHidden();
        leftContentContent();
        addsett(printstr1,printstr2,CheckUpdate);
        //聊天室页面的独占设置内容
        let AddSetter=`
    <div id="MsgSet" style="width:100%;background-color: rgba(36,70,88,0.4);border:1px solid aqua;display: flex;">
    <div style="width:5%;${(()=>{if(localStorage.MsgSet!=="false"){return 'transform: rotate(90deg);'}else{return 'transform: rotate(0deg);'}})()};" id="UnderIcon6">></div><input style="display:none;" type="checkbox" class="SettiingInput" name="MsgSetCheck" id="MsgSetCheck" ${(function (){if (localStorage.MsgSet!=="false"){return "checked";}else{return "";}})()}><label style="user-select:none;-moz-user-select:none;width: 90%;margin:0;" for="MsgSetCheck">聊天室页面设置</label>
    </div>
    <div id="MsgSetSet" style="${(()=>{if (localStorage.MsgSet!=="false"){return "display:block;";}else{return "display:none;";}})()}">
    <input  ${(()=>{if (localStorage.M27NewBBGPrint!=="false"){return "checked";}else{return "";}})()} type="checkbox" class="SettiingInput" name="BBSprintCheck" id="BBSprintCheck" value="PrintPicplan"><label for="BBSprintCheck" style="margin:0;user-select:none;-moz-user-select:none;width: auto;">启用新的聊天室界面</label><br>
    <span>消息气泡调整</span><input class="SettiingInput RangeSetting" type="range" min="0" max="1" step="0.01" value="${localStorage.MsgBoxTra}"onchange="localStorage.MsgBoxTra=value" id="MsgBoxTra" ><input class="SettiingInput ColorSettinr" type="color" id="MsgBoxColor" onchange="localStorage.MsgBoxColor=value" value="${localStorage.MsgBoxColor}"><br>
    </div><hr>`
        document.querySelector("#MsgUrlAddLine").insertAdjacentHTML("afterend",AddSetter);
        document.querySelector("#BBSprintCheck").addEventListener("click",(e)=>{
            if(e.target.checked){
                localStorage.setItem("M27NewBBGPrint","true");
            }else{
                localStorage.setItem("M27NewBBGPrint","false");
            }
        })
        document.querySelector("#MsgSetCheck").addEventListener("click",function(e) {
            if (e.target.checked){
                document.querySelector("#MsgSetSet").style.display="block";
                document.querySelector("#UnderIcon6").style.transform="rotate(90deg)";
            }else{
                document.querySelector("#MsgSetSet").style.display="none";
                document.querySelector("#UnderIcon6").style.transform="rotate(0deg)";
            }
        })

        //聊天室消息状态指示灯
        let MsgServerTime=` <span id="MsgServer" class="" style="display: ${(()=>{if(localStorage.MsgLightCheckX==='true'){return 'block';}else{return 'none';}})()};border-radius: 50%;border:1px solid gray;height:16px;width:16px;text-align: center;background-color: gray;"></span>`
        document.querySelector("#top > div > div > main > section > div > div > div > div.chat-history-header.border-bottom > div").insertAdjacentHTML("afterend",MsgServerTime)
        let MsgLight=document.querySelector("#MsgServer");
        let MsgServerReport=`<div id="MsgBox" style="z-index:1000001;display:none; top: 10px;right:50px;position: absolute;width: 180px;height: 50px;background-color: rgba(40, 64, 120, 0.4);border: 1px solid aqua;"><span id="Msg"></span> </div>`
        document.querySelector("#top > div > div > main > section > div > div > div > div.online-users-panel").insertAdjacentHTML("afterend",MsgServerReport)
        let MsgPrint= document.querySelector("#Msg");
        let OnliceUserList=document.querySelector("#top > div > div > main > section > div > div > div > div.chat-history-header.border-bottom").nextElementSibling;
        OnliceUserList.innerHTML="";
        OnliceUserList.innerHTML=`<div class="panel-body"><div class="M27-online-users-list" id="M27CHANGE"></div></div>`;
        //指示灯计时器
        GetServerStation(MsgLight,MsgPrint)
        let IntTime=setInterval(()=> {
            MesWebTestPlan(MsgLight,MsgPrint);
        },3000)

        document.querySelector("#MsgLightCheck").addEventListener("click",(e)=>{//调整指示灯的开关
            if(e.target.checked){
                localStorage.setItem("MsgLightCheckX","true");
                MsgLight.style.display="block";
                IntTime=setInterval(()=> {
                    MesWebTestPlan(MsgLight,MsgPrint)
                },3000);
            }else{
                localStorage.setItem("MsgLightCheckX","false");
                MsgLight.style.display="none";
                clearInterval(IntTime);
            }
        })
        MsgLight.addEventListener("click",()=>{//点击指示灯显示相关信息
            if(document.querySelector("#MsgBox").style.display==="none"){
                document.querySelector("#MsgBox").style.display="block";
            }else{
                document.querySelector("#MsgBox").style.display="none";
            }
        })
        //点击页面其他部分则隐藏相关菜单
        document.addEventListener('click',function(){document.querySelector("#MsgBox").style.display="none";document.querySelector(".online-users-panel").style.display="none";})

        let baca=document.querySelector("#top > div > div > main > section > div > div > div > div.chat-history-body")//聊天历史记录1
        let ul=document.querySelector(".chat-history-body > ul")//聊天历史记录2(位置更靠里)
        let histor=document.querySelector("#top > div > div > main > section")//聊天页面外层边框
        let fackone=document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs")//输入框部分
        let msginputbox=document.querySelector("#msg")//输入框自己
        let LiuYanTop=document.querySelector("#top > div > div > main > section > div > div > div > div.chat-history-header.border-bottom")
        let BBSmsgBack=document.querySelector("#top > div > div > main > section > div")
        let msgInputBoxOutsite=document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs > div.form-send-message.d-flex.justify-content-between.align-items-center.talk.write")
        fackone.className='shadow-xs'//修改输入框部分css,删除上部的渐变黑条
        fackone.setAttribute('style',`padding: .5rem .5rem; position: relative; border-radius: .375rem; margin: 0 1.5rem 1rem 1.5rem;background-color:${localStorage.CantSeeColor6}${localStorage.CantSeeset6}`)

        //阻止冒泡
        LiuYanTop.addEventListener('click',function (e){e.stopPropagation();})//解决点击顶部栏错误消失
        document.querySelector("#M27CHANGE").addEventListener("click",(e)=>{e.stopPropagation();});//解决点击自身错误消失
        document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs > div.chat-toolbar").className="chat-toolbar GameBarFix"

        let addlocalupdate=document.querySelector("#webimgsrc");

        backPrint(BBSmsgBack,document.querySelector("#top > div > div > main > section > div > div"),nowurl);
        bac.setAttribute('style',`background-color:${localStorage.BackGroundColor};`)//网页背景部分
        LiuYanTop.setAttribute("style",`background-color:${localStorage.CantSeeColor9}${localStorage.CantSeeset9};border:0px !important;`);
        baca.setAttribute('style', `background-color: ${localStorage.CantSeeColor1}${localStorage.CantSeeset1} !important;`)//聊天历史记录1
        ul.setAttribute('style', `background-color: ${localStorage.CantSeeColor3}${localStorage.CantSeeset3} !important;`)//聊天历史记录2(位置更靠里)
        histor.setAttribute('style', `background-color: ${localStorage.CantSeeColor4}${localStorage.CantSeeset4} !important;`)//聊天页面外层边框
        msginputbox.setAttribute('style', `background-color: ${localStorage.CantSeeColor7}${localStorage.CantSeeset7} !important;border:1px solid ${localStorage.CantSeeColor8}${localStorage.CantSeeset8} !important;height:2.5rem !important;`)//输入框部分

        document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs > div.form-send-message.d-flex.justify-content-between.align-items-center.talk.write > div > div").setAttribute('style', `background-color: ${localStorage.CantSeeColor7}${localStorage.CantSeeset7} !important;height:2.5rem;`)
        msgInputBoxOutsite.setAttribute('style', `background-color: ${localStorage.CantSeeColor7}${localStorage.CantSeeset7} !important;height:48px;`)//输入框外框调整

                //站长工具栏启动按钮

            setInterval(function(){
                let ToolBar=document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs > div.form-send-message.d-flex.justify-content-between.align-items-center.talk.write > button")
                if(ToolBar.style.height==="") {
                    ToolBar.setAttribute("style","height:40px !important;width:40px !important;border-radius:20px;margin:0  0.3125rem 0 0;")
            }
            },1)

        document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs > div.form-send-message.d-flex.justify-content-between.align-items-center.talk.write > div > button > i").insertAdjacentHTML("beforebegin",`<span style="margin-right: 0.125rem;font-size: 12px">发送</span>`)
        //发送按钮
        let SendButton=document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs > div.form-send-message.d-flex.justify-content-between.align-items-center.talk.write > div > button");
        SendButton.className='send-btn send-btn-M27'

        addlocalupdate.addEventListener("change",handleFileSelect,false)//本体提交图片时向DBD保存base64

        let Recolor=document.querySelector("#reall")//重置颜色和透明度配置
        Recolor.addEventListener("click",function(){
            ResetSeenum();
            let DIV2=document.querySelector("#layout-navbar");
            let fackone=document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs")//输入框部分
            let LiuYanTop=document.querySelector("#top > div > div > main > section > div > div > div > div.chat-history-header.border-bottom")
            msginputbox.setAttribute('style', `background-color: ${localStorage.CantSeeColor7}${localStorage.CantSeeset7};border:1px solid ${localStorage.CantSeeColor8}${localStorage.CantSeeset8} !important;`)//发送框的调整
            baca.setAttribute('style', `background-color: ${localStorage.CantSeeColor1}${localStorage.CantSeeset1};`)//聊天历史记录1
            ul.setAttribute('style', `background-color: ${localStorage.CantSeeColor3}${localStorage.CantSeeset3};`)//聊天历史记录2(位置更靠里)
            DIV2.setAttribute('style', `background-color:${localStorage.CantSeeColor5}${localStorage.CantSeeset5} !important;backdrop-filter:saturate(100%) !important;`);//顶栏
            fackone.setAttribute('style',`padding: .5rem .5rem; position: relative; border-radius: .375rem; margin: 0 1.5rem 1rem 1.5rem;background-color:${localStorage.CantSeeColor6}${localStorage.CantSeeset6};`)//发送栏外层边框
            LiuYanTop.setAttribute("style",`background-color:${localStorage.CantSeeColor9}${localStorage.CantSeeset9};border:0px !important;`);
        })

        //针对@闪电炫芬批插件的外链头像图片做适配(不在自定义聊天室界面可用
        document.querySelector(".chat-history-body > ul > li:nth-child(1048)  ")
        let oldLen=0
        setInterval(()=> {
            let Liloader= document.querySelectorAll(".chat-history-body > ul > li")
            if (oldLen ===Liloader.length){
            }else{
                for (let i = 0; i < Liloader.length; i++) {
                    let imgfix=Liloader[i].querySelector("div > div.user-avatar.flex-shrink-0.me-4 > div > a > img")
                    if (imgfix!==null&&imgfix.src.includes("https://boyshelpboys.com/.")){
                        let needFix=imgfix.src
                        imgfix.src=needFix.substring(26);
                    }
                }
            }
            oldLen= Liloader.length;
        },1000)

        //站长的全屏内容适配
        document.querySelector("#top > div > div > main > section > div > div > div > div.chat-history-header.border-bottom > div > div > button").addEventListener("click",function (){
            if(document.querySelector("#layout-navbar").style.display==="none"){
                document.querySelector("#layout-navbar").style.display="flex"
                //FixStyleFive.innerHTML="";
                histor.setAttribute('style', `background-color: ${localStorage.CantSeeColor4}${localStorage.CantSeeset4} !important;z-index:275 !important;`)
                if (localStorage.leaderhide==="0"){
                    document.querySelector("#layout-menu").style.display="flex";
                }
            }else{
                document.querySelector("#layout-navbar").style.display="none";
                document.querySelector("#top > div").style.backdropFilter="none";
                //FixStyleFive.appendChild(nedAddStyleFive);
                histor.setAttribute('style', `background-color: ${localStorage.CantSeeColor4}${localStorage.CantSeeset4} !important;z-index:275 !important;`)
                if (localStorage.leaderhide==="0"){
                    document.querySelector("#layout-menu").style.display="none";
                }
            }
        })
        histor.setAttribute('style', `background-color: ${localStorage.CantSeeColor4}${localStorage.CantSeeset4} !important;z-index:275 !important;`)

        //表情功能 暂时搁置
        let MojPack=`<button id="MojPack" class="toolbar-btn">😀</button>`
        let ToolBar= document.querySelector("#top > div > div > main > section > div > div > div > div.shadow-xs > div.chat-toolbar.GameBarFix > div");
        ToolBar.insertAdjacentHTML("afterend",MojPack)
        let MojPackOut=document.querySelector("#MojPack");
        let adddiv4=`<div id="MojPackBack" ></div>`
        bac.insertAdjacentHTML("beforeend",adddiv4)
        let adddiv4Out=document.querySelector("#MojPackBack");
        adddiv4Out.setAttribute('style','overflow:auto; border-radius: 5px;position: absolute;top: 40%;left: 20%;transform: translate(0%, -45%);width: 70%;height: 45%;border: 1px solid gray;z-index:1;display:none;background-color:rgba(30, 32, 34, 0.70);color:#f0f5f9;flex-wrap:wrap;flex-direction:row;justify-content:space-around;align-items:center;z-index:1000000;')
        MojPackOut.addEventListener('click',()=>{if(adddiv4Out.style.display==="none" ){adddiv4Out.style.display="flex"}else{adddiv4Out.style.display="none"}})
        let MojPackAdd=`<div class="M27MojPackImg la la-plus-circle" title="点击添加图片" style="text-align: center;line-height: 100px; font-size: 80px;" id="MojPackAddImg" ></div>`
        adddiv4Out.insertAdjacentHTML("afterbegin",MojPackAdd);
        let MojPackAddGet=document.querySelector("#MojPackAddImg");


        //在线人数重写
        document.querySelector("div.chat-history-header.border-bottom > div > div").nextElementSibling.remove();
        document.querySelector("div.chat-history-header.border-bottom > div > div").insertAdjacentHTML('afterend',`<button id="M27ChangeUserList" class="M27-online-users-btn" title="在线用户"><i class="la la-users" style="font-size: 20px;"></i><span style="font-size: 12px;color: hotpink;min-width: 20px;text-align: center;position: absolute;top: 2px;right: 2px;padding: 0 2px;"  id="M27UserNun">0</span></button>`)
        document.querySelector("#M27ChangeUserList").addEventListener("click",()=>{
            if (document.querySelector("div.chat-history-header.border-bottom").nextElementSibling.style.display==="none"||document.querySelector("div.chat-history-header.border-bottom").nextElementSibling.style===""){
                document.querySelector("div.chat-history-header.border-bottom").nextElementSibling.setAttribute("style","display: block;")
            }else{
                document.querySelector("div.chat-history-header.border-bottom").nextElementSibling.setAttribute("style","display: none;")
            }
        })
        document.querySelector("#M27CHANGE").addEventListener("click",(e)=>{
            console.log(e.target)
            if (e.target.className==="username"){
                document.querySelector("#msg").value+="@"+e.target.innerHTML+" ";
            }else if(e.target.src!==undefined){
                window.open(`https://boyshelpboys.com/user-${e.target.getAttribute("data-UID")}.htm`)
            }
        })

        //自定义消息页面
        if(localStorage.M27NewBBGPrint==="true"){
        setInterval(()=>{if(typeof c === 'undefined' ){}else{clearInterval(c)}},1);//删除站长原本的消息获取
        //添加样式表
        let NeedFixStyleSix=document.querySelectorAll("style");
        NeedFixStyleSix[NeedFixStyleSix.length-1].insertAdjacentHTML("afterend",'<style id="style6"></style>');
        let FixStyleSix=document.querySelector("#style6")
        let InnetStyle=document.createTextNode(`
        #M27-OnliceUser{display:flex;position: fixed;right: -48%;top:0;bottom: 0;background-color: #66ccff50;width: 50%;height:100%;backdrop-filter:  blur(5px);z-index: 100001;transition:all 0.3s ease 0.1s;}
        #M27-OnliceUser:hover{right: 0%;}
        @media(max-width:600px){
        #M27-OnliceUser{position: fixed;right: -60%;top:0;bottom: 0;background-color: #66ccff50;width: 70%;backdrop-filter:  blur(5px);z-index: 100001;transition:all 0.3s ease 0.1s;}
        #M27-OnliceUser:hover{right: 0%;}
        #SelectList{width:9%;flex-direction:row;flex-wrap:wrap;display:flex;position: sticky;height:100%}
        #ShowLocal{width:91%;flex-direction:row;flex-wrap:wrap;display:flex;position: relative;overflow:scroll;}
        }
        .ListImgSet{max-height:100px;max-width:100%;}
        .DIVIMGshow{border:3px solid gray;margin:3px;}
        #SelectList{width:3%;flex-direction:row;flex-wrap:wrap;display:flex;position: sticky;height:100%}
        #ShowLocal{width:95%;flex-direction:row;flex-wrap:wrap;display:flex;position: relative;overflow:scroll;}
        `)
        FixStyleSix.appendChild(InnetStyle);
        bac.insertAdjacentHTML('afterbegin',`
        <div id="M27-OnliceUser"> 
        <div id="SelectList"><button style="width: 100%;height: 100%"></button></div>
        <div id="ShowLocal"></div>
        </div>`)

        let MsgPageNum=0;//消息页数
        let MsgId;//最新消息id
        let MsgIdcheck=true;
        let MgsList=[]//消息历史记录
        let PrintNumCunt=0;//累计渲染消息计数
        let IMGlist=document.querySelector("#ShowLocal");
        let MSGGetCheck=true;
        //let MsgGet=
            $.ajax({
                url:'https://boyshelpboys.com/plugin/msto_chat/route/app/ajax.php?c=msg&type=histary',
                type:"GET",
                dataType:"json",
                async:false,
                success:function(data){
                    MsgPageNum=Math.ceil(data.total/10)
                },
                error:function(data){}
            })
            for(let i=1;i<=MsgPageNum;i++){//读取全部消息
                $.ajax({
                    url:`https://boyshelpboys.com/plugin/msto_chat/route/app/ajax.php?c=msg&type=histary&page=${i}`,
                    type:"GET",
                    dataType:"json",
                    async:true,
                    success:function(data){
                        MgsList.push({"id":i,"msgBody":data.list})
                    },
                    error:function(data){}
                });
            }
            setTimeout(()=>{//获取目前消息数量
            console.log(MgsList)
            document.querySelector(".chat-history-body > ul").style.display="none"
            document.querySelector(".chat-history-body").insertAdjacentHTML("beforeend",`<ul class="M27-list-unstyled chat-history talk" data-base-href="../plugin/msto_chat/route/" id="M27-MsgList"></ul>`);
            ul=document.querySelector('#M27-MsgList')
            ul.setAttribute('style', `background-color: ${localStorage.CantSeeColor3}${localStorage.CantSeeset3};`)
            ul.innerHTML=""
            let UserId=document.querySelector("#statelyMyInfoModal > ul > div > div:nth-child(1) > div.flex-grow-1 > a").innerHTML
                console.log(MgsList.length)
                for (let x=MgsList.length-1;x>=0;x--){//渲染全部消息
                    console.log(MgsList[x].length)
                for (let y=MgsList[x].length-1;y>=0;y--){
                if(JSON.parse(MgsList[x][y]).name){
                    message=JSON.parse(MgsList[x][y]).msg//修正特殊消息内容
                    message = message.replace(/\[img](.*?)\[\/img]/g, (match, url) => {
                        // 清理B站图片链接中的参数
                        url = url.replace(/@.*$/, '');
                        return renderImage(url);
                    });
                    mediaPatterns.forEach(pattern => {
                        message = message.replace(pattern.regex, pattern.handler);
                    });if(message.includes("<img src=")){
                        let Num1=message.indexOf("=");console.log(Num1);
                        let Num2=message.indexOf("alt");console.log(Num2);
                        let InputLink
                        if(message.slice(Num1+2,Num2-2).includes("http")){
                            InputLink=message.slice(Num1+2,Num2-2)
                        }else{
                            InputLink="https://boyshelpboys.com/"+message.slice(Num1+2,Num2-2)
                        }
                        PicUrl.splice(0,0,InputLink);
                        IMGlist.insertAdjacentHTML("afterbegin",`<div class="DIVIMGshow"><img class="ListImgSet" src="${InputLink}" alt="${InputLink}"></div>`)
                        console.log(PicUrl);
                    }
                    let UID=JSON.parse(MgsList[x][y]).pic.substring(JSON.parse(MgsList[x][y]).pic.lastIndexOf("/")+1,JSON.parse(MgsList[x][y]).pic.lastIndexOf("."))
                    if (UID.includes('avatar')||UID===""){
                        UID="https://boyshelpboys.com/chat.htm"
                    }else{
                        UID=`https://boyshelpboys.com/user-${UID}.htm`
                    }
                    ul.insertAdjacentHTML("beforeend",`<li data-index="${JSON.parse(MgsList[x][y]).id}" id="M27-${JSON.parse(MgsList[x][y]).id}" style="list-style:none;padding: 0;margin: 0;display: flex;width: 99%;height: auto;font-size: 1rem;justify-content: space-around;">
                                        <div style="margin: 0.375rem;box-shadow: 0 1px 5px ${(()=>{if (JSON.parse(MgsList[x]).name===UserId){return "red";}else{return "blue";}})()},0 -1px 5px ${(()=>{if (JSON.parse(MgsList[x]).name===UserId){return "red";}else{return "blue";}})()},1px 0 5px ${(()=>{if (JSON.parse(MgsList[x]).name===UserId){return "red";}else{return "blue";}})()},-1px 0 5px ${(()=>{if (JSON.parse(MgsList[x]).name===UserId){return "red";}else{return "blue";}})()};width: 2.25rem;height: 2.25rem; align-items: center;justify-items: center;display: flex;top: 0.125rem;left: 0.125rem;">
                                            <a href="${UID}" target="_blank"><img src='${JSON.parse(MgsList[x][y]).pic}' alt="${JSON.parse(MgsList[x][y]).name}" style="font-size: 6px;overflow: hidden;width: 2.25rem;height: 2.25rem;"></a>
                                        </div>
                                        <div style="width: 95%;align-items: flex-start;justify-items: center;display: flex;flex-direction: column;">
                                            <div style="width: 100%;height: auto;"><small style="font-size: 12px;" class="userName" data-username="${JSON.parse(MgsList[x][y]).name}" id="M27-${JSON.parse(MgsList[x][y]).name}-${JSON.parse(MgsList[x][y]).id}">${JSON.parse(MgsList[x][y]).name}</small>&emsp;<small style="font-size: small">${new Date(JSON.parse(MgsList[x][y]).time*1000).toLocaleString()}</small></div>
                                            <div class="chat-message-text" style="background-color: orange;padding: 0.375rem;margin:0.375rem 0 0 0.375rem;max-width:80% ;height: auto; white-space: normal;"><span style="word-break: break-all">${message}</span></div>
                                        </div></li>`)
                //添加点击id@对方的效果
                document.querySelector(`#M27-${JSON.parse(MgsList[x]).name}-${JSON.parse(MgsList[x][y]).id}`).addEventListener('click', ()=>{
                    document.querySelector("#msg").value+="@"+document.querySelector(`#M27-${JSON.parse(MgsList[x][y]).name}-${JSON.parse(MgsList[x][y]).id}`).getAttribute('data-username')+" ";
                })
                    PrintNumCunt+=1;
                }
                MsgId=JSON.parse(MgsList[x]).id//设定最新消息的id
                document.querySelector(".chat-history-body").scrollTop = document.querySelector(".chat-history-body").scrollHeight;//滚动至底部
                }
            }
            //定时询问新消息
            //let MsgGtrAJAX=
                setInterval(()=>{
                let CheckScroll;
                MsgIdcheck=true
                if(MSGGetCheck){
                MSGGetCheck=false;
                $.ajax({
                    url:`https://boyshelpboys.com/plugin/msto_chat/route/app/ajax.php?c=msg&type=new&last_id=${MsgId}`,
                    type:"GET",
                    dataType:"json",
                    async:true,
                    success:function(data){
                        CheckScroll=data.list.length
                        for (let x=0;x<data.list.length;x++){
                            MsgIdcheck=true
                            for (let y=MgsList.length-1;y>=0;y--){//去重
                                if (JSON.parse(data.list[x]).id===JSON.parse(MgsList[y]).id){
                                    MsgIdcheck=false
                                    break;
                                }
                            }
                            if(JSON.parse(data.list[x]).name&&MsgIdcheck){
                                message=JSON.parse(data.list[x]).msg
                                message = message.replace(/\[img](.*?)\[\/img]/g, (match, url) => {
                                    // 清理B站图片链接中的参数
                                    url = url.replace(/@.*$/, '');
                                    return renderImage(url);
                                });
                                mediaPatterns.forEach(pattern => {
                                    message = message.replace(pattern.regex, pattern.handler);
                                });
                                if(message.includes("<img src=")){
                                    let Num1=message.indexOf("=");
                                    let Num2=message.indexOf("alt");
                                    let InputLink
                                    if(message.slice(Num1+2,Num2-2).includes("http")){
                                        InputLink=message.slice(Num1+2,Num2-2)
                                    }else{
                                        InputLink="https://boyshelpboys.com/"+message.slice(Num1+2,Num2-2)
                                    }
                                    PicUrl.splice(0,0,InputLink);
                                    IMGlist.insertAdjacentHTML("afterbegin",`<div class="DIVIMGshow"><img class="ListImgSet" src="${InputLink}" alt="${InputLink}"></div>`)
                                    console.log(PicUrl);
                                }
                                let UID=JSON.parse(data.list[x]).pic.substring(JSON.parse(data.list[x]).pic.lastIndexOf("/")+1,JSON.parse(data.list[x]).pic.lastIndexOf("."))
                                if (UID.includes('avatar')||UID===""){
                                    UID="https://boyshelpboys.com/chat.htm"
                                }else{
                                    UID=`https://boyshelpboys.com/user-${UID}.htm`
                                }
                                ul.insertAdjacentHTML("beforeend",`<li data-index="${JSON.parse(data.list[x]).id}" id="${JSON.parse(data.list[x]).id}" style="list-style:none;padding: 0;margin: 0;display: flex;width: 99%;height: auto;font-size: 1rem;justify-content: space-around;">
                                <div style="margin: 0.375rem;box-shadow: 0 1px 5px ${(()=>{if (JSON.parse(data.list[x]).name===UserId){return "red";}else{return "blue";}})()},0 -1px 5px ${(()=>{if (JSON.parse(data.list[x]).name===UserId){return "red";}else{return "blue";}})()},1px 0 5px ${(()=>{if (JSON.parse(data.list[x]).name===UserId){return "red";}else{return "blue";}})()},-1px 0 5px ${(()=>{if (JSON.parse(data.list[x]).name===UserId){return "red";}else{return "blue";}})()};width: 2.25rem;height: 2.25rem; align-items: center;justify-items: center;display: flex;top: 0.125rem;left: 0.125rem;">
                                    <a href="${UID}" target="_blank"><img src='${JSON.parse(data.list[x]).pic}' alt="${JSON.parse(data.list[x]).name}" style="overflow: hidden;font-size: 8px;width: 2.25rem;height: 2.25rem;"></a>
                                </div>
                                <div style="width: 95%;align-items: flex-start;justify-items: center;display: flex;flex-direction: column;">
                                    <div style="width: 100%;height: auto;"><small style="font-size: 12px;" class="userName" data-username="${JSON.parse(data.list[x]).name}" id="M27-${JSON.parse(data.list[x]).name}-${JSON.parse(data.list[x]).id}">${JSON.parse(data.list[x]).name}</small>&emsp;<small style="font-size: small">${new Date(JSON.parse(data.list[x]).time*1000).toLocaleString()}</small></div>
                                    <div class="chat-message-text" style="background-color: orange;padding: 0.375rem;margin:0.375rem 0 0 0.375rem;max-width:80% ;height: auto; white-space: normal;"><span style="word-break: break-all">${message}</span></div>
                                </div></li>`)
                                //添加点击id@对方的效果
                                document.querySelector(`#M27-${JSON.parse(data.list[x]).name}-${JSON.parse(data.list[x]).id}`).addEventListener('click', ()=>{
                                    document.querySelector("#msg").value+="@"+document.querySelector(`#M27-${JSON.parse(data.list[x]).name}-${JSON.parse(data.list[x]).id}`).getAttribute('data-username')+" ";
                                })
                                PrintNumCunt+=1;
                                MgsList.push(data.list[x])
                                MsgId=JSON.parse(data.list[x]).id
                            }else{MsgId=ul.querySelector('li:last-child').id}
                        }
                        if(CheckScroll>0){
                            document.querySelector(".chat-history-body").scrollTop =document.querySelector(".chat-history-body").clientHeight+ document.querySelector(".chat-history-body").scrollHeight;
                        }
                        MSGGetCheck=true
                    }
                })}
                    $(document).off('contextmenu');
                },1000)
                //document.querySelector(".message-menu").innerHTML=""
            document.querySelector(".chat-history-body").scrollTop =document.querySelector(".chat-history-body").scrollHeight;
        },1000)}

    }else if(nowurl.includes('boyshelpboys.com/plugin')){
            return "";
    }else if(nowurl.includes('boyshelpboys.com/my')){
        bac.setAttribute("style",`background-color:${localStorage.BackGroundColor};`)
        let printstr1=["线上地址","删除左侧导航栏","淡色字体大小","淡色字描边/字体颜色","淡色字描边大小","顶部","左部","背景高度比例(填写0即为auto)","背景宽度比例(填写0即为auto)","在线图片","本地图片","section写入","body-background写入","渲染到网页背景","渲染到聊天室背景"];
        let printstr2=["滚动条不显示","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","'*没做*'*没做*"]

        leftANDtop();
        WidthHeightSet();
        backPrint(bac,addtarge,nowurl);
        ScrollHidden();
        leftContentContent();
        addsett(printstr1,printstr2,CheckUpdate);
    }else if(nowurl ==="https://www.boyshelpboys.com/"||nowurl ==="https://boyshelpboys.com/"||nowurl.includes("boyshelpboys.com/#")||nowurl.includes("boyshelpboys.com/index")){
        bac.setAttribute("style",`background-color:${localStorage.BackGroundColor};`)
        ScrollHidden()
        leftANDtop();
        WidthHeightSet();
        backPrint(bac,addtarge,nowurl);
        leftContentContent();

        let Tiezi1=document.querySelector("#top > div > div > main > div > div.col-lg-9.main > div.card-threadlist > div.card.card-body.py-2");
        let Tiezi6=document.querySelector("#top > div > div > main > div > div.col-lg-3.aside > div:nth-child(2)")
        let Tiezi7=document.querySelector("#search_form > div > input")
        Tiezi1.setAttribute('style', `background-color:${localStorage.CantSeeColor1}${localStorage.CantSeeset1};`);//帖子部分外框颜色|透明度
        Tiezi6.setAttribute('style', `background-color: ${localStorage.CantSeeColor6}${localStorage.CantSeeset6} !important;`)//搜索栏背景||边框
        Tiezi7.setAttribute('style', `background-color: ${localStorage.CantSeeColor7}${localStorage.CantSeeset7} !important;border:1px solid ${localStorage.CantSeeColor8}${localStorage.CantSeeset8} !important;height:2.5rem !important;`)//搜索栏输入框背景||描边

        let printstr1=["线上地址","删除左侧导航栏","淡色字体大小","淡色字描边/字体颜色","淡色字描边大小","顶部","左部","背景高度比例(填写0即为auto)","背景宽度比例(填写0即为auto)","在线图片","本地图片","section写入","body-background写入","渲染到网页背景","渲染到聊天室背景"];
        let printstr2=["滚动条不显示","帖子栏1透明度","顶栏而下透明度","*没做*","*没做*","*没做*","搜索框颜色透明度","搜索输入框颜色",'搜索框描边',"*没做*"]
        addsett(printstr1,printstr2,CheckUpdate);

        let addlocalupdate=document.querySelector("#webimgsrc");
        let localget=document.querySelector("#save");
        localget.addEventListener("click",addtolocal,false);//点击向localst保存数据
        addlocalupdate.addEventListener("change",handleFileSelect,false)//本体提交图片时向DBD保存base64
        if(document.querySelector("#top > div > div > main > div > div.col-lg-3.aside > div:nth-child(3)") !=null && typeof document.querySelector("#top > div > div > main > div > div.col-lg-3.aside > div:nth-child(3)")!=="undefined"){
            document.querySelector("#top > div > div > main > div > div.col-lg-3.aside > div:nth-child(3)").innerHTML=""
        }
    }else if(nowurl.includes("boyshelpboys.com/thread-")){
        // bac.setAttribute("style",`background-color:${localStorage.BackGroundColor};`)
        // setInterval(function(){if (bac.style.backgroundColor===''){
        //     console.log("reprint"); backPrint(bac,addtarge,nowurl);
        // }},1)
        leftANDtop();
        WidthHeightSet();
        backPrint(bac,addtarge,nowurl);
        ScrollHidden();
        rePrint(webWidth,webHeight);
        leftContentContent();

        let printstr1=["线上地址","删除左侧导航栏","聊天室名称大小","聊天室名称描边/字体颜色","聊天室名称描边大小","顶部","左部","背景高度比例(填写0即为auto)","背景宽度比例(填写0即为auto)","在线图片","本地图片","section写入","body-background写入","渲染到网页背景","渲染到聊天室背景"];
        let printstr2=["滚动条不显示","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","'*没做*'*没做*"]
        addsett(printstr1,printstr2,CheckUpdate);
        let addlocalupdate=document.querySelector("#webimgsrc");
        let localget=document.querySelector("#save");
        localget.addEventListener("click",addtolocal,false);//点击向localst保存数据
        addlocalupdate.addEventListener("change",handleFileSelect,false)//本体提交图片时向DBD保存base64
        //帖子界面图片放大观看功能
        bac.insertAdjacentHTML("afterbegin",`
        <div id="ImgBoxM" style="justify-content:center;align-items:center;background-color: rgba(0,0,0);z-index: 1000000000;position: fixed;display: none;left: 0;right: 0;top: 0;bottom: 0;width: 100%;height: 100%;">
        <div id="ZoomSet" style="justify-content:center;align-items:center;height: ${Math.ceil(webHeight*0.9)}px;position: fixed;transition: transform  0.2s ease;">
        <img style="max-width:100%;max-height: 100%;object-fit: contain;justify-content:center;" src="" id="PicIMgPrint" alt="">
        </div>
        </div>`)
        let TargeImg
        let ImgShow=document.querySelector("#PicIMgPrint");//灰色背景
        let ImgBoxM=document.querySelector("#ImgBoxM");//图片
        let ZoomSet=document.querySelector("#ZoomSet");//缩放框
        let url=nowurl;//原始url记录
        let scale = 1;
        const scaleStep = 0.1; // 每次滚动的缩放步长
        const minScale = 0.5; // 最小缩放比例
        const maxScale = 3; // 最大缩放比例
        document.querySelector("#the_thread_message").addEventListener("click",(e)=>{
            console.log(e.target)
            let ImgLoadTest=new Image()
            if (e.target.src!=null){
                ImgLoadTest.src=e.target.src
                ImgLoadTest.onload=()=>{
                    ImgShow.src=e.target.src;
                    ImgBoxM.style.display="flex";
                    e.target.id="M27TargeSave";
                    TargeImg=e.target
                }
                ImgLoadTest.onerror=()=>{
                    console.log("链接无法加载")
                }
            }
        });
        ImgBoxM.addEventListener("wheel",(e)=>{
            e.preventDefault();
            if(e.deltaY<0){
                scale-=scaleStep
            }else{
                scale+=scaleStep
            }
            scale = Math.min(Math.max(scale, minScale), maxScale);
            //ZoomSet.style.height=ZoomSet.style.height.substring(1,ZoomSet.style.height.indexOf("px"))+SollNum+"px"
            ZoomSet.style.transform=`scale(${scale})`;
        })//部分代码来自https://www.cnblogs.com/ai888/p/18613761
        ImgBoxM.addEventListener("click",()=>{
            ImgShow.src="";
            ImgBoxM.style.display="none";
            location.href=url.slice(0,url.indexOf("#M27TargeSave"))+'#M27TargeSave';
            TargeImg.id=""
            TargeImg=null
            ZoomSet.style.height=Math.ceil(webHeight*0.9)+"px"
        })
        ImgShow.addEventListener("click",(e)=>{
            e.stopPropagation()
        })
    }
    else{
        leftANDtop();
        WidthHeightSet();
        backPrint(bac,addtarge,nowurl);
        ScrollHidden();
        rePrint(webWidth,webHeight);
        leftContentContent();

        let printstr1=["线上地址","删除左侧导航栏","聊天室名称大小","聊天室名称描边/字体颜色","聊天室名称描边大小","顶部","左部","背景高度比例(填写0即为auto)","背景宽度比例(填写0即为auto)","在线图片","本地图片","section写入","body-background写入","渲染到网页背景","渲染到聊天室背景"];
        let printstr2=["滚动条不显示","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","*没做*","'*没做*'*没做*"]
        addsett(printstr1,printstr2,CheckUpdate);
        let addlocalupdate=document.querySelector("#webimgsrc");
        let localget=document.querySelector("#save");
        localget.addEventListener("click",addtolocal,false);//点击向localst保存数据
        addlocalupdate.addEventListener("change",handleFileSelect,false)//本体提交图片时向DBD保存base64
    }
})();