如果你看到本段文字,说明该页面未正常加载全局JS,部分功能将无法使用,请点击 刷新 重新加载页面。
如果打开页面显示缩略图创建出错,请点击刷新或页面右上WIKI功能中的刷新按钮清除页面缓存并刷新,如果还有问题,请多尝试几次。
全站通知:

Widget:聊天室hsd

来自碧蓝航线WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

<input id="CRinput" style="width:100%;padding:0.5em" type="text">

<button id="CRsubmit" style="padding:1em">发送</button>

<iframe id="CRMain" src="" width="100%" height="600" frameborder="0" scrolling="no"></iframe> <script> CRMeta={ "baseWiki":"/hsd", "localWiki":"", "channel":"/1", } CRFun={ "initialize":function(){ CRMeta.localWiki=mw.config.values.wgScriptPath document.getElementById("CRMain").src=CRMeta.baseWiki+"/聊天室"+CRMeta.localWiki+CRMeta.channel+"/内页" document.getElementById("CRsubmit").onclick=function(){ let msg=document.getElementById("CRinput").value.trim() if(!msg){ return } document.getElementById("CRinput").value="" getApi("https://wiki.biligame.com"+CRMeta.baseWiki+"/api.php?action=query&meta=tokens&format=json",function(json){ let token=JSON.parse(json).query.tokens.csrftoken let url="https://wiki.biligame.com"+CRMeta.baseWiki+"/api.php" let now=new Date() now=new Date(now.getTime()+now.getTimezoneOffset()*60000+3600000*8) let time=now.getFullYear()+"."+padleft(now.getMonth()+1,2,0)+"."+padleft(now.getDate(),2,0)+" "+padleft(now.getHours(),2,0)+":"+padleft(now.getMinutes(),2,0)+":"+padleft(now.getSeconds(),2,0) let fde=new FormData() fde.append("action","edit") fde.append("title","聊天室"+CRMeta.localWiki+CRMeta.channel+"/内页/记录") fde.append("prependtext","模板:聊天消息\n") fde.append("minor",1) fde.append("token",token) fde.append("format","json") postFdApi(url,fde,function(){ let fdp=new FormData() fdp.append("action","purge") fdp.append("titles","聊天室"+CRMeta.localWiki+CRMeta.channel+"/内页") fdp.append("format","json") postFdApi(url,fdp) }) }) } document.getElementById("CRinput").onkeypress=function(e){ if(e.keyCode==13){ document.getElementById("CRsubmit").click() } } if(!localStorage[CRMeta.baseWiki+CRMeta.localWiki+CRMeta.channel+"CRLastTime"]||(new Date()-localStorage[CRMeta.baseWiki+CRMeta.localWiki+CRMeta.channel+"CRLastTime"])/1000/60>3){ localStorage[CRMeta.baseWiki+CRMeta.localWiki+CRMeta.channel+"CRLastTime"]=new Date().getTime() getApi("https://wiki.biligame.com"+CRMeta.baseWiki+"/api.php?action=query&meta=tokens&format=json",function(json){ let token=JSON.parse(json).query.tokens.csrftoken let url="https://wiki.biligame.com"+CRMeta.baseWiki+"/api.php" let now=new Date() now=new Date(now.getTime()+now.getTimezoneOffset()*60000+3600000*8) let time=now.getFullYear()+"."+padleft(now.getMonth()+1,2,0)+"."+padleft(now.getDate(),2,0)+" "+padleft(now.getHours(),2,0)+":"+padleft(now.getMinutes(),2,0)+":"+padleft(now.getSeconds(),2,0) let fde=new FormData() fde.append("action","edit") fde.append("title","聊天室"+CRMeta.localWiki+CRMeta.channel+"/内页/记录") fde.append("prependtext","模板:聊天消息\n") fde.append("minor",1) fde.append("token",token) fde.append("format","json") postFdApi(url,fde,function(){ let fdp=new FormData() fdp.append("action","purge") fdp.append("titles","聊天室"+CRMeta.localWiki+CRMeta.channel+"/内页") fdp.append("format","json") postFdApi(url,fdp) }) }) } setInterval(function(){ localStorage[CRMeta.baseWiki+CRMeta.localWiki+CRMeta.channel+"CRLastTime"]=new Date().getTime() },1000) } } window.addEventListener("load",function(){ CRFun.initialize() }) function padleft(str,len,c){ try{ str=str.toString() } catch(e){ return "" } if(!c||c.length>1){ c=0 } c=c+"" if(str.length>=len){ return str } for(;str.length<len;){ str=c+str } return str } function getApi(url,callback=false,callbackE=false){ let ajax=new XMLHttpRequest() if(!callback){ ajax.open("GET",url,false) ajax.send() let json=JSON.parse(ajax.responseText) return json } ajax.open("GET",url) ajax.send() ajax.onreadystatechange=function(){ if(ajax.readyState==4){ if(ajax.status==200){ callback(ajax.responseText) } else if(ajax.status==404&&callbackE){ callbackE(true) } } } } function postFdApi(url,fd,callback=false,callbackE=false){ let ajax=new XMLHttpRequest() if(!callback){ ajax.open("POST",url,false) ajax.send(fd) return ajax.responseText } ajax.open("POST",url) ajax.send(fd) ajax.onreadystatechange=function(){ if(ajax.readyState==4){ if(ajax.status==200){ callback(ajax.responseText) } else if(ajax.status==404&&callbackE){ callbackE(true) } } } } </script>