您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
一加社区快捷键
当前为
- // ==UserScript==
- // @name OnePlusBBS QuickKey
- // @description 一加社区快捷键
- // @namespace https://greasyfork.org/
- // @author choosezzz
- // @version 1.7
- // @match https://www.oneplusbbs.com/forum*
- // @match https://www.oneplusbbs.com/thread*
- // @match https://www.oneplusbbs.com/homemod-space-uid*
- // @icon https://static.oneplus.cn/data/attachment/common/4c/common_121_icon.png
- // @require https://cdn.jsdelivr.net/npm/vue
- // @grant GM_addStyle
- // ==/UserScript==
- (function() {
- //settings
- appendSettingDiv();
- //css
- GM_addStyle("#settingMountParent{font-size:15px;width:400px;z-index:999;background-color:white;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);-moz-transform:translateX(-50%) translateY(-50%);-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);border-radius:5px;box-shadow:3px 3px 10px red}");
- GM_addStyle("#setting_content{padding:2px;border-top:2px solid black;border-bottom:2px solid black}");
- GM_addStyle(".setting_op{background:#34aff4;width:50px;padding:3px 20px;}.setting_op:hover{background:#EEDA0A;color:#ffffff;}");
- document.onkeydown = function(event) {
- var href = window.location.href;
- var e = event || window.event;
- if (!e) {
- return;
- }
- if (e.ctrlKey && e.keyCode == 83) {
- stopDefault(e);
- settingApp.ctrlShow();
- alert(settingApp.isShow)
- }
- //个人主页
- if (href.search("homemod-space-uid*") != -1) {
- //Ctrl+Alt
- if (e.altKey && e.ctrlKey) {
- var uid = href.replace(/https:\/\/www.oneplusbbs.com\/homemod-space-uid-/g, "").replace(/.html/g, "");
- $("a_sendpm_" + uid).click();
- }
- }
- //Ctrl+number
- if (((e.keyCode >= 49 && e.keyCode <= 57) || (e.keyCode >= 97 && e.keyCode <= 105)) && e.ctrlKey) {
- var msgId = e.keyCode - 96 < 0 ? e.keyCode - 48 : e.keyCode - 96;
- quickPaste(e, msgId);
- }
- //普通帖子页
- if (href.indexOf("thread-") != -1 || href.indexOf("viewthread") != -1) {
- handlePost(e);
- }
- //列表页
- if (href.indexOf("forum-") != -1 || href.indexOf("forumdisplay") != -1) {
- handleList(e);
- }
- }
- })();
- function appendSettingDiv() {
- var settingMount = document.createElement("div");
- settingMount.id = "settingMountParent";
- settingMount.innerHTML = '<div id="setting_mount" v-show="isShow">' +
- '<div style="padding: 3px;background: #aadcdf;text-align: center;">' +
- '<span>【使用 Ctrl+S 打开设置选项】</span></div>' +
- '<span style="text-align: center;color: red;font-size: 16px">{{tips}}</span>' +
- '<div id="setting_content"><div v-for="item of 9" :key="item" style="padding-left: 12px;padding-top: 2px;">' +
- '<span>Ctrl+{{item}}:</span>' +
- '<input type="text" style="width: 75%" v-model="quickMsg[item-1]"></div></div>' +
- '<div style="text-align: center;padding: 4px;"><span class="setting_op" @click="ctrlShow">关闭</span>' +
- '<span style="width:50px;padding:3px 50px;"> | </span><span class="setting_op" @click="saveSettings">{{saveTips}}</span></div></div>';
- document.body.appendChild(settingMount);
- dragFunc("settingMountParent");
- }
- function dragFunc(id) {
- var Drag = document.getElementById(id);
- 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;
- Drag.style.left = ev.clientX - disX + "px";
- Drag.style.top = ev.clientY - disY + "px";
- Drag.style.cursor = "move";
- };
- };
- Drag.onmouseup = function() {
- document.onmousemove = null;
- this.style.cursor = "default";
- };
- }
- var settingApp = new Vue({
- el: "#setting_mount",
- data: {
- isShow: false,
- tips: "",
- saveTips: "保存",
- quickMsg: ["请勿灌水或回复与帖子无关的内容", "请勿发布纯标题无内容贴"],
- },
- methods: {
- ctrlShow: function() {
- this.isShow = !this.isShow;
- if (this.isShow) {
- var msg = getQuickMsg();
- if(null != msg){
- this.quickMsg = msg;
- }
- }
- },
- saveSettings: function() {
- var result = this.quickMsg.join("$");
- localStorage.quickMsg = result;
- this.saveTips = "保存成功";
- setTimeout(() => {
- this.isShow = false;
- this.saveTips = "保存";
- }, 1500);
- }
- }
- });
- function getQuickMsg() {
- var msg = localStorage.quickMsg;
- if (!msg || null == msg || msg.split("$").length == 0) {
- settingApp.isShow=true;
- settingApp.tips = "请先设置快捷键对应的内容";
- setTimeout(function() {
- settingApp.tips = "";
- }, 2000);
- return null;
- } else {
- return msg.split("$");
- }
- }
- function pasteMsg(element, msgArr, id) {
- if (msgArr == null || msgArr.length < id) {
- settingApp.isShow=true;
- settingApp.tips = "当前快捷键暂未定义任何内容,请自定义后使用";
- setTimeout(function() {
- settingApp.tips = "";
- }, 2000);
- return;
- }
- if (element && msgArr.length >= id) {
- if (msgArr[id - 1] == "") {
- settingApp.isShow=true;
- settingApp.tips = "当前快捷键暂未定义任何内容,请自定义后使用";
- setTimeout(function() {
- settingApp.tips = "";
- }, 2000);
- return;
- }
- element.value = msgArr[id - 1];
- return;
- }
- }
- //屏蔽默认快捷键
- function stopDefault(e) {
- // W3C标准
- if (e.preventDefault) {
- e.preventDefault();
- } else {
- //IE
- window.event.returnValue = false;
- }
- return false;
- }
- function quickPaste(e, id) {
- var href = window.location.href;
- stopDefault(e);
- var quickMsg = getQuickMsg();
- //操作说明输入
- var mods = $("fwin_mods");
- if (mods && mods.style.display != "none") {
- pasteMsg($("reason"), quickMsg, id);
- return;
- }
- //列表页
- var ftadmin = $("floatlayout_topicadmin");
- if (ftadmin && ftadmin.style.display != "none") {
- pasteMsg($("reason"), quickMsg, id);
- return;
- }
- //回帖输入
- var reply = $("fwin_reply");
- if (reply && reply.style.display != "none") {
- pasteMsg($("postmessage"), quickMsg, id);
- return;
- }
- //消息
- var showMsgBox = $("fwin_showMsgBox");
- if (showMsgBox && showMsgBox.style.display != "none") {
- pasteMsg($("pmmessage"), quickMsg, id);
- return;
- }
- //管理页面
- if (href.search("op=ban&uid=") != -1) {
- pasteMsg($("ct").getElementsByClassName("pt")[0], quickMsg, id);
- }
- }
- //判断是否已显示操作选项
- var cateShow = false;
- //分类选项索引
- var cateIndex = 0;
- //移动操作
- var moveShow = false;
- //游乐园
- var moveIndex = 21;
- function handlePost(e) {
- // Ctrl + z 快速回复
- if (e.keyCode == 90 && e.ctrlKey) {
- stopDefault(e);
- $("post_reply").click();
- return;
- }
- //获取操作列表
- var modMenu = $("modmenu");
- if (!modMenu) {
- console.log("当前板块无权限");
- return;
- }
- var links = modMenu.getElementsByTagName("a");
- //Ctrl+D 快速删除
- if (e.keyCode == 68 && e.ctrlKey) {
- stopDefault(e);
- var mdly = $("mdly");
- if (mdly && mdly.style.display != "none") {
- var aList = mdly.getElementsByClassName("c")[0].getElementsByTagName("a");
- if (aList.length >= 3) {
- if (aList[2].innerHTML == "删除") {
- aList[2].click();
- }
- }
- return;
- }
- links[0].click();
- return;
- }
- //Ctrl+Alt 快速分类功能
- if (e.altKey && e.ctrlKey) {
- stopDefault(e);
- //快捷点击分类链接
- if (!cateShow) {
- let type = links[10];
- if (type) {
- type.click();
- cateShow = true;
- }
- } else {
- let types = $("typeid");
- if (types && types.options.length > 0) {
- types.options[cateIndex].selected = "true";
- cateIndex++;
- }
- if (cateIndex == types.options.length) {
- cateIndex = 0;
- }
- }
- return;
- }
- //Ctrl+X 快速移动功能
- if (e.ctrlKey && e.keyCode == 88) {
- stopDefault(e);
- //快捷点击移动链接
- if (!moveShow) {
- let type = links[9];
- if (type) {
- type.click();
- moveShow = true;
- }
- } else {
- var moveTo = $("moveto");
- if (moveTo && moveTo.options.length > 0) {
- moveTo.options[moveIndex].selected = "true";
- moveTo.onchange();
- //游乐园 <--> 轻摄影
- moveIndex = moveIndex == 21 ? 13 : 21;
- }
- }
- } else {
- //重置
- moveIndex = 21;
- cateIndex = 0;
- moveShow = false;
- cateShow = false;
- }
- }
- function handleList(e) {
- var checkBoxs = document.getElementsByClassName("o");
- if (!checkBoxs || checkBoxs.length < 5) {
- console.log("此版块权限");
- }
- var mdly = $("mdly");
- if (mdly) {
- var ops = mdly.getElementsByTagName("p")[0].getElementsByTagName("a");
- if (e.altKey && e.ctrlKey) {
- stopDefault(e);
- ops[2].click();
- }
- if (e.ctrlKey && e.keyCode == 88) {
- stopDefault(e);
- ops[1].click();
- }
- if (e.keyCode == 90 && e.ctrlKey) {
- stopDefault(e);
- ops[0].click();
- }
- }
- }