// ==UserScript== // @name 自动回复(一言hitokoto网抑云句子版) // @namespace https://bbs.tampermonkey.net.cn/ // @version 0.1.1 // @description 自动回复 // @author 张仨 // @grant unsafeWindow // @grant GM_addStyle // @grant GM_xmlhttpRequest // @connect https://v1.hitokoto.cn // @match https://bbs.tampermonkey.net.cn/* // ==/UserScript== (function () { 'use strict'; var div = document.querySelector('.kmstt'); //搜寻元素 div.insertAdjacentHTML('afterend', '自动回复'); /* *insertAdjacentHTML() 方法将指定的文本解析为 Element 元素,并将结果节点插入到DOM树中的指定位置。 *它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。 *这避免了额外的序列化步骤,使其比直接使用innerHTML操作更快。 *'beforebegin':元素自身的前面。 *'afterend':元素自身的后面。 *'afterbegin':插入元素内部的第一个子节点之前。 *'beforeend':插入元素内部的最后一个子节点之后。 */ //监听按钮点击事件 document.querySelector('.button').onclick = async function () { await getHitokoto().then((j)=>{ document.querySelector('#fastpostmessage').value = j; document.querySelector('#fastpostrefresh').checked = true document.querySelector('#fastpostsubmit').click() }) } })(); function getHitokoto() { return new Promise((resolve,reject)=>{ GM_xmlhttpRequest({ url:"https://v1.hitokoto.cn/?c=j", method:"GET", headers:{ "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62" }, timeout:3000, onload:function(xhr) { if (xhr.status == 200) { var j = JSON.parse(xhr.responseText).hitokoto resolve(j) } else { resolve("ggnb!!!!!!!") } }, ontimeout:function() { resolve("ggnb!!!!!!!") } }) }) } //设置css样式,这里简单设置其中几项属性,其他继承父元素 GM_addStyle(` .button { background: #34c0f1 !important; /*加上!important提高等级,避免被原网页css覆盖*/ cursor: pointer; /*鼠标放上去变成小手*/ margin-top: 10px; /*上外边距,跟元素自身拉开间距*/ transition: background 0.5s; /*过渡效果,注意浏览器兼容性*/ } .button:hover{ background: #3fd1b2 !important; /*:hover CSS伪类,鼠标悬停效果,这里是鼠标放上去就变色*/ } `)