社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
Widget:SN
<script> window.addEventListener("load",function(){ document.body.appendChild(Snote.adder) Snote.load() }) window.addEventListener("mousedown",function(e){ if(Snote.onEdit&&!e.path.includes(Snote.onEdit.dom)){ Snote.onEdit.outEdit() } if(Snote.contextmenu.parentNode&&!e.path.includes(Snote.contextmenu)){ Snote.contextmenu.parentNode.removeChild(Snote.contextmenu) } }) window.addEventListener("mousemove",function(e){ if(Snote.onMove&&!Snote.onEdit&&!Snote.onMove.config.isFixed){ Snote.onMove.setPosition({ "left":Snote.onMove.position.left+e.movementX, "top":Snote.onMove.position.top+e.movementY }) e.preventDefault() } else if(Snote.onEdit&&Snote.onEdit.config.isImgNote&&Snote.onEdit.config.isOnDraw){ let $this=Snote.onEdit Snote.drawStart=[Snote.drawStart[0]+e.movementX,Snote.drawStart[1]+e.movementY] $this.ctx.lineTo(...Snote.drawStart) $this.ctx.stroke() $this.ctx.beginPath() $this.ctx.moveTo(...Snote.drawStart) e.preventDefault() } }) window.addEventListener("mouseup",function(){ Snote.onMove=null if(Snote.onEdit&&Snote.onEdit.config.isImgNote){ let $this=Snote.onEdit $this.setConfig("isOnDraw",false) } }) window.addEventListener("touchstart",function(e){ if(Snote.onEdit&&!e.path.includes(Snote.onEdit.dom)){ Snote.onEdit.outEdit() } }) window.addEventListener("touchmove",function(e){ if(Snote.onMove&&!Snote.onEdit&&!Snote.onMove.config.isFixed){ let $this=Snote.onMove $this.setPosition({ "left":$this.position.left-Snote.touchStart[0]+e.touches[0].screenX, "top":$this.position.top-Snote.touchStart[1]+e.touches[0].screenY }) Snote.touchStart=[e.touches[0].screenX,e.touches[0].screenY] e.preventDefault() } else if(Snote.onEdit&&Snote.onEdit.config.isImgNote&&Snote.onEdit.config.isOnDraw){ let $this=Snote.onEdit $this.ctx.lineTo(e.touches[0].pageX-$this.canvas.getClientRects()[0].left,e.touches[0].pageY-$this.canvas.getClientRects()[0].top) $this.ctx.stroke() $this.ctx.beginPath() $this.ctx.moveTo(e.touches[0].pageX-$this.canvas.getClientRects()[0].left,e.touches[0].pageY-$this.canvas.getClientRects()[0].top) e.preventDefault() } },{"passive":false}) window.addEventListener("touchend",function(){ Snote.onMove=null if(Snote.onEdit&&Snote.onEdit.config.isImgNote){ let $this=Snote.onEdit $this.setConfig("isOnDraw",false) } }) window.addEventListener("touchcancel",function(){ Snote.onMove=null if(Snote.onEdit&&Snote.onEdit.config.isImgNote){ let $this=Snote.onEdit $this.setConfig("isOnDraw",false) } }) function Snote(text="",config={}){ this.createDom() this.config=config this.position={} this.setPosition(Snote.defaultPosition) this.setText(text) this.put() Snote.allNotes.add(this) } Snote.version="1.0.0" Snote.allNotes=new Set() Snote.defaultPosition={ "left":50, "top":50, "width":300, "height":250, } Snote.menulist=[ [function(){return "编辑"},function(note){ note.inEdit() }], [function(note){ if(note.config.isImgNote){ return "切换为文本便签" } return "切换为绘图便签" },function(note){ if(!note.config.isImgNote){ note.initCanvas() note.setConfig("isImgNote",true) note.setText("data:image/png;base64,") } else{ note.setConfig("isImgNote",false) note.setText("") }
}], [function(note){ if(note.config.isImgNote){ return null } if(note.config.isWikitext){ return "切换为普通文本" } return "切换为WIKI文本" },function(note){ note.setConfig("isWikitext",!note.config.isWikitext) note.setText() }], [function(note){ if(note.config.isFixed){ return "取消固定" } return "固定" },function(note){ note.setConfig("isFixed",!note.config.isFixed,"fixed") }], [function(note){ if(note.config.isTransparent){ return "取消透明化" } return "透明化" },function(note){ note.setConfig("isTransparent",!note.config.isTransparent,"transparent") }], [function(note){ if(note.config.isNotSave){ return "取消离开页面后删除" } return "离开页面后删除" },function(note){ note.setConfig("isNotSave",!note.config.isNotSave,"notSave") }], [function(){return "立即删除 不可恢复!"},function(note){ note.delete() }], ] Snote.contextmenu=document.createElement("ul") Snote.contextmenu.classList.add("snote-contextmenu") Snote.adder=document.createElement("adder") Snote.adder.id="snote-add" Snote.adder.innerHTML="+" Snote.adder.onclick=function(){ let note=new Snote("新的便签,请在此输入内容……") if(Snote.onEdit){ Snote.onEdit.outEdit() } note.inEdit() } Snote.welcome=function(){ new Snote("这些介绍用的便签不会自动保存,就像右下角显示的一样,这也是便签的功能菜单可以控制的\n换而言之,你新建的便签可以在任何加载了便签功能的页面展示",{"isNotSave":true}).dom.classList.add("notSave") new Snote("这还是个实验功能,所以可能会有奇奇怪怪的BUG",{"isNotSave":true}).dom.classList.add("notSave") new Snote("便签不会收集你的任何信息,便签的所有功能所需数据都保存在了浏览器的localStorage中",{"isNotSave":true}).dom.classList.add("notSave") new Snote("你可以在便签上点击鼠标右键(移动端是长按)来打开便签的功能菜单",{"isNotSave":true}).dom.classList.add("notSave") new Snote("你可以点击屏幕左下角的“+”来新建便签",{"isNotSave":true}).dom.classList.add("notSave") new Snote("看起来你是第一次使用便签,至少在这个浏览器里是第一次,所以让我简单地介绍一下怎么使用吧\n你可以自由拖动便签,放在不会遮挡你的视线的地方",{"isNotSave":true}).dom.classList.add("notSave") } Snote.save=function(){ let notes=[] Snote.allNotes.forEach(function(note){ if(!note.config.isNotSave){ notes.push({ "classes":note.dom.className, "text":note.config.isImgNote?note.canvas.toDataURL():note.text, "position":note.position, "config":note.config }) } }) localStorage.SnoteSave=JSON.stringify(notes) } Snote.load=function(){ if(localStorage.SnoteSave){ let notes=JSON.parse(localStorage.SnoteSave) for(let i=0;i<notes.length;i++){ let note=new Snote(notes[i].text,notes[i].config) if(note.config.isImgNote){ note.initCanvas() } note.dom.className=notes[i].classes note.setPosition(notes[i].position) } } else{ Snote.welcome() localStorage.SnoteSave="[]" } } Snote.getWikiparse=function(text,callback){ let fd=new FormData() fd.append("action","parse") fd.append("title",mw.config.values.wgPageName) fd.append("text",text) fd.append("contentmodel","wikitext") fd.append("format","json") postFdApi("https://wiki.biligame.com"+mw.config.values.wgScriptPath+"/api.php",fd,function(json){ callback(JSON.parse(json).parse.text["*"]) }) }
Snote.prototype.createDom=function(){
let $this=this
$this.dom=document.createElement("div")
$this.dom.classList.add("snote")
$this.dom.classList.add("snote-default")
$this.dom.onmousedown=function(e){
Snote.onMove=$this
if(Snote.onTop!=$this){
$this.put()
}
}
$this.dom.ontouchstart=function(e){
Snote.onMove=$this
Snote.touchStart=[e.touches[0].screenX,e.touches[0].screenY]
if(Snote.onTop!=$this){
$this.put()
}
}
$this.dom.oncontextmenu=function(e){
if(!Snote.onEdit){
$this.createContextmenu()
Snote.contextmenu.style.left=e.clientX
Snote.contextmenu.style.top=e.clientY
this.appendChild(Snote.contextmenu)
let rect=Snote.contextmenu.getClientRects()[0]
Snote.contextmenu.style.left=rect.left-Math.max(rect.right-document.body.clientWidth,0)
Snote.contextmenu.style.top=rect.top-Math.max(rect.bottom-document.body.clientHeight,0)
e.preventDefault()
}
}
}
Snote.prototype.createContextmenu=function(){
let $this=this
Snote.contextmenu.innerHTML=""
for(let i=0;i<Snote.menulist.length;i++){
if(Snote.menulist[i][0]($this)){
let li=document.createElement("li")
li.innerHTML=Snote.menulist[i][0]($this)
li.onclick=function(){
Snote.contextmenu.parentNode.removeChild(Snote.contextmenu)
Snote.menulist[i][1]($this)
}
Snote.contextmenu.appendChild(li)
}
}
}
Snote.prototype.initCanvas=function(){
let $this=this
$this.dom.innerHTML=""
$this.canvas=document.createElement("canvas")
$this.ctx=$this.canvas.getContext("2d")
$this.canvas.onmousedown=function(e){
if(Snote.onEdit==$this){
$this.setConfig("isOnDraw",true)
Snote.drawStart=[e.offsetX,e.offsetY]
$this.ctx.beginPath()
$this.ctx.moveTo(...Snote.drawStart)
}
}
$this.canvas.ontouchstart=function(e){
if(Snote.onEdit==$this){
$this.setConfig("isOnDraw",true)
$this.ctx.beginPath()
$this.ctx.moveTo(e.touches[0].pageX-$this.canvas.getClientRects()[0].left,e.touches[0].pageY-$this.canvas.getClientRects()[0].top)
}
}
$this.dom.appendChild($this.canvas)
$this.canvas.width=$this.canvas.clientWidth
$this.canvas.height=$this.canvas.clientHeight
}
Snote.prototype.setText=function(text=this.text){
let $this=this
$this.text=text+""
if($this.config.isImgNote){
let img=new Image()
img.onload=function(){
$this.ctx.drawImage(img,0,0)
}
img.src=text
}
else{
if($this.config.isWikitext){
Snote.getWikiparse($this.text,function(parse){
$this.dom.innerHTML=parse
})
}
else{
$this.dom.innerHTML=""+$this.text.replaceAll(/</g,"<").replaceAll(/>/g,">")+""
}
}
Snote.save()
}
Snote.prototype.setPosition=function(info){
let $this=this
for(let key in info){
$this.position[key]=info[key]
$this.dom.style[key]=info[key]
}
Snote.save()
}
Snote.prototype.setConfig=function(key,value,changedClass){
let $this=this
$this.config[key]=value
if(changedClass){
if(value){
$this.dom.classList.add(changedClass)
}
else{
$this.dom.classList.remove(changedClass)
}
}
Snote.save()
}
Snote.prototype.put=function(){
let $this=this
document.body.appendChild($this.dom)
Snote.onTop=$this
}
Snote.prototype.inEdit=function(){
let $this=this
if($this.config.isImgNote){
$this.canvas.style.backgroundColor="white"
}
else{
$this.dom.innerHTML=""
let textarea=document.createElement("textarea")
textarea.value=$this.text
$this.dom.appendChild(textarea)
textarea.select()
}
Snote.onEdit=$this
}
Snote.prototype.outEdit=function(){
let $this=this
if($this.config.isImgNote){
$this.canvas.style.backgroundColor=""
}
else{
$this.setText($this.dom.getElementsByTagName("textarea")[0].value)
}
Snote.onEdit=null
}
Snote.prototype.delete=function(){
let $this=this
$this.dom.parentNode.removeChild($this.dom)
Snote.allNotes.delete($this)
Snote.save()
}
function postFdApi(url,fd,callback=false,callbackE=false){
let ajax=new XMLHttpRequest()
if(!callback){
ajax.open("POST",url,false)
ajax.send(fd)
let json=JSON.parse(ajax.responseText)
return json
}
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>
<style> .snote{ position:fixed; z-index:9999; padding:10px; margin:0px; box-shadow:#888888 0px 0px 10px; } .snote textarea{ resize:none; width:100%; height:100%; } .snote canvas{ width:100%; height:100%; } .snote-default{ background-color:#FFF59B; } .snote-contextmenu{ position:fixed; width:max-content; } .snote-contextmenu li{ list-style:none; background-color:white; border-right:1px solid; border-bottom:1px solid; padding:2px 5px; cursor:default; } .snote-contextmenu li:hover{ background-color:#0078D7; color:white; } .snote.notSave:before{ content:"离开页面后自动删除"; position:absolute; right:0px; bottom:0px; font-size:xx-small; color:darkgray; } .snote.fixed:after{ content:""; position:absolute; right:-5px; top:-29px; width:31px; height:39px; background-image:url(data:image/png;base64,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); } .snote.transparent{ opacity:0.2; transition:opacity 1s; } .snote.transparent:hover{ opacity:1; transition:opacity 0.1s; }
- snote-add{
position:fixed; z-index:10000; left:5px; bottom:5px; background:#FFF59B; border-radius:50%; border:1px solid; padding:10px; font-size:2em; line-height:1em; cursor:pointer; }
</style>