您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
添加一个一键已读按钮
- // ==UserScript==
- // @name sobclear
- // @namespace http://tampermonkey.net/
- // @version 0.4.5
- // @description 添加一个一键已读按钮
- // @author cctyl
- // @match https://www.sunofbeach.net/*
- // @icon https://www.google.com/s2/favicons?domain=sunofbeach.net
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function () {
- 'use strict';
- let cssStr = `
- #clear-msg{
- color: #0084ff;
- width:15px;
- margin-right: 12px !important;
- }
- `;
- /**
- * 添加css样式
- * @returns {boolean}
- */
- function initCss() {
- let addTo = document.querySelector('body');
- if (!addTo)
- addTo = (document.head || document.body || document.documentElement);
- //创建style标签
- let cssNode = document.createElement("style");
- cssNode.setAttribute("type", "text/css");
- //设置css值
- cssNode.innerHTML = cssStr;
- try {
- addTo.appendChild(cssNode);
- } catch (e) {
- console.log(e.message);
- }
- }
- /**
- * 获取cookie值
- * @param name
- * @returns {string|null}
- * @deprecated 因为有多个sobtoken,暂时不用他
- */
- function getCookie(name) {
- var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
- if (arr = document.cookie.match(reg))
- return unescape(arr[2]);
- else
- return null;
- }
- //重试次数
- let tryCount = 0
- //多个sobtoken组成的数组
- let sobTokenArr = []
- /**
- * 获取到所有的sobtoken
- */
- function getSobToken() {
- let cookies = document.cookie
- cookies = cookies.split(';')
- for (let i = 0; i < cookies.length; i++) {
- let cookieTemp = cookies[i];
- if (cookieTemp.indexOf("sob_token") !== -1) {
- let tempSobArr = cookieTemp.split('=');
- sobTokenArr.push(tempSobArr[1])
- }
- }
- }
- /**
- * 发送请求清除消息
- */
- function clearMsg(sobToken) {
- // https://api.sunofbeaches.com/ct/msg/read
- tryCount++;
- fetch('https://api.sunofbeaches.com/ct/msg/read', {
- headers: {
- 'sob_token': sobToken,
- },
- credentials: "include"
- })
- .then(response => {
- response.json().then(value => {
- console.log(value)
- if (value.code === 10000) {
- console.log("发送成功")
- let ring = document.querySelector('.el-badge__content')
- ring.style.display = "none"
- } else {
- console.log('发送失败')
- //如果失败了,就重发
- //重发次数有限制,有多少sobtoken就发多少次
- if (tryCount < sobTokenArr.length) {
- console.log("重试")
- clearMsg(sobTokenArr[tryCount])
- }
- }
- })
- })
- .then(data => console.log(data));
- }
- /**
- * 摸鱼动态的输入框允许粘贴
- */
- function allowPaste() {
- let divInput = document.querySelector('div[contenteditable]')
- if (divInput) {
- divInput.addEventListener("paste", function (e) {
- e.stopPropagation();
- e.preventDefault();
- var text = '', event = (e.originalEvent || e);
- console.log(event.clipboardData)
- if (event.clipboardData && event.clipboardData.getData) {
- text = event.clipboardData.getData('text/plain');
- } else if (window.clipboardData && window.clipboardData.getData) {
- text = window.clipboardData.getData('Text');
- }
- if (document.queryCommandSupported('insertText')) {
- document.execCommand('insertText', false, text);
- } else {
- document.execCommand('paste', false, text);
- }
- })
- }
- }
- //允许粘贴
- allowPaste();
- //创建节点
- let clsBtnParent = document.getElementById('header-login-success');
- let newnode = document.createElement("i");
- //设置id
- newnode.setAttribute('id', 'clear-msg')
- newnode.setAttribute('class', 'el-icon-delete')
- //添加到节点中
- clsBtnParent.insertBefore(newnode, clsBtnParent.firstChild);
- //初始化样式
- initCss();
- //获取cookie
- getSobToken();
- //添加点击事件
- setTimeout(() => {
- newnode.onclick = function () {
- clearMsg(sobTokenArr[0])
- }
- }, 1000)
- })();