一个超超超好用的备忘录/记事本/笔记本~再也不用担心忘记什么啦!自动通过域名分类,适用于全部网站~超实用的生产力工具~
// ==UserScript==// @name Q-note【网站备忘录】// @namespace http://tampermonkey.net/// @version 1.2.0// @description 一个超超超好用的备忘录/记事本/笔记本~再也不用担心忘记什么啦!自动通过域名分类,适用于全部网站~超实用的生产力工具~// @author Priate// @match *://*/*// @grant GM_setValue// @grant GM_getValue// @grant GM_addStyle// @grant GM_setClipboard// @require https://cdn.jsdelivr.net/npm/vue@2// @icon https://priate.oss-cn-beijing.aliyuncs.com/products/picture/icon/q-note.png// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert.min.js// @supportURL https://greasyfork.org/zh-CN/scripts/421876/feedback// @source https://github.com/PriateXYF// @license MIT// ==/UserScript==(function() {'use strict';function initSetting(){if (!GM_getValue('priate_script_note_data')) {GM_setValue('priate_script_note_data', [])}if (!GM_getValue('priate_script_note_setting')) {GM_setValue('priate_script_note_setting', {hide : true,number : 0,left : 20,top : 100})}}function injectDiv(){var priate_script_div = document.createElement("div")priate_script_div.innerHTML = `<div id="priate_script_div" :class="setting.hide || add ? '' : 'priate_script_hide'"><span v-show="!setting.hide" @click="showScript" class="hide-button">{{hideTipe}}</span><div v-show="setting.hide"><b style='font-size:30px; margin: 0 0'>Q-note</b><p style='margin: 0 0'>by Priate</p><button @click="showAdd">添加</button><button @click='hideScript'>隐藏</button><button id='readme' @click="clearHostData" v-show="filterData.length > 0">清空</button><button @click='resetScript'>重置</button></br><table v-show="filterData.length > 0"><thead><tr><th>内容</th><th>时间</th><th>操作</th></tr></thead><tbody id="priate_script_table"><tr v-for="(item, index) in filterData" key="index"><td v-show="!item.isHide"><a style='color:#337ab7' @click="copyNote(item.content)">{{item.content}}</a></td><td v-show="item.isHide"><a style='color:blue' @click="showNote(item.id)">显示</a> | <a style='color:red' @click="copyNote(item.content)">复制</a></td><td>{{item.time}}</td><td><a style='color:#993333' @click="deleteNote(item.id)">删除</a> | <a style='color:green'>修改</a></td></tr></tbody></table></div><div id="add_note" v-show="add"><h2>添加记录</h2><table><tr><td><textarea v-on:keydown.enter="submitAddNote" v-model="note.content" placeholder="添加笔记"></textarea></td></tr><tr><td>隐藏文本<input v-model="note.isHide" type="checkbox"></td></tr><tr><td><button @click="hideAdd">取消</button> <button @click="addNote">确定</button></td></tr></table></div></div>`GM_addStyle(`#priate_script_div{font-size : 15px;position: fixed;background-color: rgba(240, 223, 175, 0.9);color : #660000;text-align : center;padding: 10px;z-index : 2147483647;border-radius : 20px;border:2px solid black;}#priate_script_div:hover{box-shadow: 5px 5px 5px #000000;transition: box-shadow 0.3s;}.priate_script_hide{padding: 0 !important;border:none !important;}a{cursor : pointer;text-decoration : none;}/*表格样式*/#priate_script_div table{text-align: center;border:2px solid #660000;margin: 5px auto;padding: 2px;border-collapse: collapse;}/*表格框样式*/#priate_script_div td{border:2px solid #660000;padding: 8px 12px;max-width : 300px;word-wrap : break-word;}/*表头样式*/#priate_script_div th{border:2px solid #660000;padding: 8px 12px;}/*脚本按钮样式*/#priate_script_div button{display: inline-block;border-radius: 4px;border: 1px solid #660000;background-color: transparent;color: #660000;text-decoration: none;padding: 5px 10px;margin : 5px 10px;}/*脚本按钮悬浮样式*/#priate_script_div button:hover{cursor : pointer;color: rgb(240, 223, 175);background-color: #660000;}/*右下角显示按钮*/#priate_script_div .hide-button{z-index: 2147483647;width: 32px;height: 32px;cursor: pointer;position: fixed;left: 0px;bottom: 0px;color: #660000;text-align: center;line-height: 32px;margin: 10px;border-width: 1px;border-style: solid;border-color: #660000;border-image: initial;border-radius: 100%;}/*右下角显示按钮悬浮样式*/#priate_script_div .hide-button:hover{background-color : rgba(240, 223, 175, 0.9);}/*输入框样式*/#priate_script_div textarea{height : 50px;width : 200px;background-color: #fff;border:1px solid #000000;padding: 4px;}`);document.querySelector("html").appendChild(priate_script_div)var setting = GM_getValue('priate_script_note_setting')document.getElementById("priate_script_div").style.left = (setting.left || 20) + "px";document.getElementById("priate_script_div").style.top = (setting.top || 100) + "px";}function dragFunc(id) {var Drag = document.getElementById(id);var setting = GM_getValue('priate_script_note_setting')Drag.onmousedown = function(event) {var ev = event || window.event;event.stopPropagation();var disX = ev.clientX - Drag.offsetLeft;var disY = ev.clientY - Drag.offsetTop;document.onmousemove = function(event) {var ev = event || window.event;setting.left = ev.clientX - disXDrag.style.left = setting.left + "px";setting.top = ev.clientY - disYDrag.style.top = setting.top + "px";Drag.style.cursor = "move";GM_setValue('priate_script_note_setting', setting)};};Drag.onmouseup = function() {document.onmousemove = null;this.style.cursor = "default";};};// 获取当前时间function getNowFormatDate() {var date = new Date();var seperator1 = "-";var seperator2 = ":";var month = date.getMonth() + 1;var strDate = date.getDate();if (month >= 1 && month <= 9) {month = "0" + month;}if (strDate >= 0 && strDate <= 9) {strDate = "0" + strDate;}var currentdate = month + seperator1 + strDate + " " + date.getHours() + seperator2 + date.getMinutes()return currentdate;}//初始化脚本设置initSetting()//注入脚本divinjectDiv()// 处理数据等逻辑var vm = new Vue({el: '#priate_script_div',data: {setting: GM_getValue('priate_script_note_setting'),add: false,//添加的内容note : {content : "",// 是否隐藏isHide : false,},data: GM_getValue('priate_script_note_data'),},methods : {hideScript(){this.setting.hide = falseGM_setValue('priate_script_note_setting', this.setting)swal("已隐藏!可以在左下角重新召唤出来哦~", {icon: "success",buttons: false,timer: 1500,});},showScript(){this.setting.hide = truethis.add = falseGM_setValue('priate_script_note_setting', this.setting)},showAdd(){this.add = truethis.setting.hide = false},hideAdd(){this.add = falsethis.setting.hide = true},clearNote(){this.note = {content : "",// 是否隐藏isHide : false,}},addNote(){if(this.note.content.trim() == ""){swal("你还没有填写内容哦~", {icon: "warning",buttons: false,timer: 1500,});return}var origan_data = GM_getValue('priate_script_note_data')this.note.id = this.setting.number++this.note.time = getNowFormatDate()this.note.host = location.hostorigan_data.push(this.note)GM_setValue('priate_script_note_data', origan_data)this.data = origan_datathis.hideAdd()GM_setValue('priate_script_note_setting', this.setting)this.clearNote()},// 重置脚本数据resetScript(){var _this = thisswal({title: "是否重置全部脚本数据?",text: "重置后将清空全部数据并将设置变为默认!",icon: "warning",buttons: true}).then((willDelete) => {if (willDelete) {swal("重置成功!", {icon: "success",buttons: false,timer: 1000,});GM_setValue('priate_script_note_data', [])GM_setValue('priate_script_note_setting', {hide : true,number : 0,left : 20,top : 100})// 重新渲染样式和数据_this.data = []document.getElementById("priate_script_div").style.left = "20px";document.getElementById("priate_script_div").style.top = "100px";}})},deleteNote(id){swal({title: "确定删除?",text: "删除后将无法恢复数据!",icon: "warning",buttons: true,}).then((willDelete) => {if (willDelete) {swal("删除成功!", {icon: "success",buttons: false,timer: 1000,});var origan_data = GM_getValue('priate_script_note_data');var new_data = origan_data.filter((item)=> item.id != id);GM_setValue('priate_script_note_data', new_data);this.data = new_data;}});},// 清空站点全部记录clearHostData(){swal({title: "是否清空数据??",text: "将会清空当前站点【" + location.host + "】下的全部数据!",icon: "warning",buttons: true}).then((willDelete) => {if (willDelete) {swal("清除成功!", {icon: "success",buttons: false,timer: 1000,});var origan_data = GM_getValue('priate_script_note_data')var new_data = origan_data.filter((item)=> item.host != location.host)GM_setValue('priate_script_note_data', new_data)this.data = new_data}})},// 显示隐藏的内容showNote(id){for(var index in this.data){if(this.data[index].id == id){this.data[index].isHide = falsevar item = this.data[index]// 恢复隐藏状态setTimeout(function(){item.isHide = true}, 1000)break}}},copyNote(content){console.log(content)GM_setClipboard(content)swal("复制成功!", {icon: "success",buttons: false,timer: 1000,});},//快捷键功能submitAddNote(e) {if (e.metaKey || e.altKey) {this.addNote()}},},computed: {filterData(){return this.data.filter((item)=> item.host == location.host)},hideTipe(){return this.filterData.length}}})//设置div可拖动dragFunc("priate_script_div");})();